前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识Mybatis中的动态sql

初识Mybatis中的动态sql

作者头像
许喜朝
发布2020-08-11 16:22:33
7610
发布2020-08-11 16:22:33
举报

##Mybatis中的动态sql

​ 根据用户提供的数据动态决定查询语句依赖的查询条件或者sql语句的内容

if标签

选择标签,if会自动的把第一个条件执行的逻辑运算符去掉(or,and)

//如果传递了名字就根据名字查询,如果没传递就查询全部
<select id="findAll3" resultType="com.mb.pojo.account">
    select * from account where 1=1
    <if test="name!=null">
        and name like '%${name}%'
    </if>
</select>
where标签

​ 相当于sql中的where后面跟条件,需要注意的是where和if一样也是会把第一个条件执行的逻辑运算符去掉

例如:

<!--    where标签-->
    <select id="findMoney" resultType="com.mb.pojo.account">
        select * from account
        <where>
            <if test="minMoney!=null">
                money>#{minMoney}
            </if>
            <!--    转义字符:<![CDATA[转义字符]]>-->
            <if test="maxMoney!=null">
                and money<![CDATA[<]]>#{maxMoney}
            </if>
        </where>
    </select>

需要注意的是在mybatis中"<"符号需要进行转义,因为在xmL中标签是“<”开头的

set标签

set标签可以将动态的配置 SET 关键字,并剔除追加到条件末尾的任何不相关的逗号。使用 if+set 标签修改后,在进行表单更新的操作中,哪个字段中有值才去更新,如果某项为 null 则不进行更新,而是保持数据库原值。

<!--    修改表中指定得信息-->
    <update id="updateById">
        update account
        <set>
            <if test="name!=null">name=#{name},</if>
            <if test="money!=null">money=#{money}</if>
        </set>
        where id=#{id}
    </update>
foreach标签

item :循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details,在list和数组中是其中的对象,在map中是value。 index :在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。 open :表示该语句以什么开始 close :表示该语句以什么结束 separator :表示元素之间的分隔符

<!--    查询多个id(foreach的使用)-->
    <select id="findByIds" resultType="com.mb.pojo.account">
        select * from account where id in 
        <foreach collection="array" open="(" close=")" item="id" separator=",">
            #{id}
        </foreach>
    </select>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • if标签
  • where标签
  • set标签
  • foreach标签
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档