mybatis的动态 SQL学习笔记一

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

if

<select id="方法名"
     resultType="返回类型">
  SELECT * FROM 表名
  WHERE 条件1
  <if test="字段名 != null">
    AND 条件二
  </if>
</select>

choose、when、otherwise

<select id="方法名"
     resultType="返回类型">
  SELECT * FROM 表名 WHERE 条件1
  <choose>
    <when test="字段名!= null">
      AND 条件二
    </when>
    <otherwise>
      AND 条件三
    </otherwise>
  </choose>
</select>

trim、where、set

<select id="方法名"
     resultType="返回类型">
  SELECT * FROM 表名
  WHERE
  <if test="字段名 != null">
    字段名 = #{字段名}
  </if>
</select>

这种写法。在state为空的时候他就会出错。遇到这种我们可以把where换成< where>< /where>.还可以通过<trim prefix=“WHERE” prefixOverrides="AND |OR ">。。。。。</trim>。其中prefixOverrides中写的东西会移除,会显示prefix中的内容。

set使用在动态更新sql语句

<update id="方法名">
  update 表明
    <set>
      <if test="字段名!= null">字段名=#{变量名}</if>
     。。。。。
    </set>
  where 条件语句
</update>

使用<set>元素。会在首行插入set元素,并且会删除额外的逗号。
相当于

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>

foreach

大多在in条件语句中使用。

<foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
</foreach>

其中collection填写的是参数类型(list、array、map)对应的parameterType为(java.util.List、java.util.ArrayList、java.util.HashMap)

  • .item 表示一个元素名字
  • index 表示每次迭代到的位置。
  • open表示以什么开始
  • separator 分隔符
  • close以什么结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值