mybatis动态sql使用

1.if(用于判断条件,如果成了则执行相关语句)

select id="dynamicIfTest" resultType="User">
      select * from user where sex = 'male'
      <if test="address != null">
        and address = #{address}
      </if>
</select>
2.choose(相当于java中的switch,一旦有条件满足就会跳出)

<select id="dynamicChooseTest" resultType="User">
    select * from user where sex = 'male'
    <choose>
          <when test="username != null">
            and username like #{username}
          </when>
        <when test="phone != null">
            and phone like #{phone}
          </when>
        <otherwise>
            and address = 'chengdu'
        </otherwise>
    </choose>
</select>

3.trim(trim 元素可以给自己包含的内容加上前缀(prefix)或加上后缀(suffix),也可以把包含内容的首部(prefixOverrides)或尾部(suffixOverrides)某些内容移除。

<select id="dynamicTrimTest" resultType="User">
      select * from user
    <trim prefix="where" prefixOverrides="and |or ">
          <if test="address != null">
            address = #{address}
          </if>
          <if test="phone != null">
            and phone like #{phone}
          </if>
    </trim>
</select>

4.where(where 元素知道只有在一个以上的 if 条件满足的情况下才去插入 where 子句,而且能够智能地处理 and 和 or 条件。

<select id="dynamicWhereTest" resultType="User">
      select * from user
    <where>
          <if test="address != null">
            address = #{address}
          </if>
          <if test="phone != null">
            and phone like #{phone}
          </if>
    </where>
</select>

5.set(set 元素可以被用于动态包含需要更新的列,而舍去其他的。

<update id="dynamicSetTest">
      update User
    <set>
          <if test="phone != null">phone=#{phone},</if>
          <if test="address != null">address=#{address}</if>
    </set>
      where id=#{id}
</update>

6.foreach(

foreach 元素常用到需要对一个集合进行遍历时,在 in 语句查询时特别有用。

foreach 元素的主要属性:

  • item:本次迭代获取的元素,当使用字典或者 Map 时,index 是键,item 是值
  • index:当前迭代的次数,当使用字典或者 Map 时,index 是键,item 是值
  • open:开始标志
  • separator:每次迭代之间的分隔符
  • close:结束标志
  • collection:该属性是必须指定的,在不同情况下,该属性的值是不一样的,主要有一下3种情况: 单参数且为 List 时,值为 list 单参数且为 array 数组时,值为 array 多参数需封装成一个 Map,map 的 key 就是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 map 里面的 key

<select id="dynamicForeachTest" resultType="User">
      select * from user where id in
      <foreach item="item" index="index" collection="list"
          open="(" separator="," close=")">
        #{item}
      </foreach>
</select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值