Mybatis——动态SQL

1.动态SQL

        随着用户的输入或外部条件的变化而变化的SQL语句,我们就称之为动态SQL。

73f7ecb1d62c491e9d61c34d43a2fa20.png

        从上图我们可以看出我们SQL语句是固定不变的,我们想让SQL随着输入条件而改变,就需要用到动态SQL。

        准备工作:

b25600870b4d46feae00ca930f23b282.png

        这个插件可以快速进行SQL定位

5394a09e63bf4ab2888e33438a69ac46.png

2.<if>

        用于判断条件是否成立,使用test属性进行条件判断,如果条件为true,则拼接SQL。

e189ca0087b941dda0e4e32215d73e70.png

a29604e807d342dc8dffc9ec00fb4697.png

2d0882300d18486586fe2359e264ecbd.png        此时已经初步达到了动态SQL的效果。随后我们再次对传入的参数进行简单的修改,

f59114ac24ef4d6f82ae3d8922dc9f90.png

87dafc7ffa3545809d242aca7d49a64e.png

        程序报错,SQL语法错误,我仔细看不难发现我们的查询语句那多了一个and,我应该如何去解决这个问题?我们要用到一个新的元素<where>。

3.<where> 

        where元素只会在子元素有内容的情况下才插入where子句,而且会自动去除子句开头的and或or。

fb18f6bbf901407a90239d3a73d7c8ec.png

815c9379d7bc4fecabdabe06c8d17f43.png

4.<foreach>

        collection:遍历的集合

        items:遍历出来的元素

        separator:分隔符

        open:遍历开始前拼接的SQL片段

        close:遍历结束后拼接的SQL片段

449c356c6b404dc8b70f593530f7666a.png

ea14f0f35d4341fca90d4297089a9d22.png

         foreach进行循环遍历。

5.<sql><include>

6287f37419f94347aff8fc6bfb207b96.pnga8e3c83f3f684e219ce0410938b82234.png

        sql元素用来定义可重用的SQL片段,通过id唯一标识。

        include元素通过refid,指定包含的SQL片段。

6.<update><set>

       set元素会动态在行首插入set关键字,并且会删除额外的逗号(用在update元素内)。

0cb0d86ed28c45ca8f01c4376510c673.png

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答你关于MyBatis中if标签的使用方式。 在MyBatis中,if标签通常用于动态生成SQL语句。它可以用来判断某个字段是否为空,从而根据不同情况生成不同的SQL语句。 以下是一些使用if标签的示例: 1. 判断一个参数是否为null或空字符串: ``` <select id="selectUser" parameterType="java.lang.String" resultType="User"> SELECT * FROM users <where> <if test="username != null and username != ''"> AND username = #{username} </if> </where> </select> ``` 这个例子中,如果传入的username参数不为null或空字符串,则会将其加入到SQL语句中,生成类似于“AND username = 'xxx'”这样的条件语句。 2. 判断一个对象的某个属性是否为null: ``` <select id="selectUser" parameterType="User" resultType="User"> SELECT * FROM users <where> <if test="email != null"> AND email = #{email} </if> </where> </select> ``` 这个例子中,如果传入的User对象的email属性不为null,则会将其加入到SQL语句中,生成类似于“AND email = 'xxx'”这样的条件语句。 3. 判断一个集合是否为空: ``` <select id="selectUser" parameterType="java.util.Map" resultType="User"> SELECT * FROM users <where> <if test="ids != null and ids.size() > 0"> AND id IN <foreach item="id" collection="ids" open="(" separator="," close=")"> #{id} </foreach> </if> </where> </select> ``` 这个例子中,如果传入的Map对象中包含一个名为ids的集合属性且不为空,则会将其加入到SQL语句中,生成类似于“AND id IN (1,2,3)”这样的条件语句。 以上是一些if标签的使用示例,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值