Mybatis常用标签

  1. 动态sql拼接

if 标签

if标签通常用于WHERE语句、UPDATE语句、INSERT语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。

<if test="name != null and name != ''">
         and NAME = #{name}
</if>

foreach 标签

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

属性介绍:

  • collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。

  • item :表示在迭代过程中每一个元素的别名

  • index :表示在迭代过程中每次迭代到的位置(下标)

  • open :前缀

  • close :后缀

  • separator :分隔符,表示迭代时每个元素之间以什么分隔

choose标签

有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose 元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行 otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。

if是与(and)的关系,而choose是或(or)的关系。

<choose>
    <when test="Name!=null and student!='' ">
        AND name LIKE CONCAT(CONCAT('%', #{student}),'%')
    </when>
    <when test="hobby!= null and hobby!= '' ">
        AND hobby = #{hobby}
    </when>
    <otherwise>
        AND AGE = 15
    </otherwise>
</choose>

mybatis中like怎么写

有两种写法,不要在SQL中拼接,会造成SQL注入的安全问题

  1. concat

SELECT *  FROM user
<trim prefix="where" prefixOverrides="and">
    <if test="name !=null">
        name like concat('%',#{name},'%')
    </if>
    and age=20
</trim>
  1. bind

<bind name="pattern" value="'%' + name + '%'"></bind>
SELECT *  FROM user
<trim prefix="where" prefixOverrides="and">
    <if test="name !=null">
        name like #{pattern}
    </if>
    and age=20
</trim>

mybatis中 大于,小于号怎么写

  1. 使用xml语法转义:&gt;为大于号“ >”; &lt; 为小于号 “<” ;

SELECT *  FROM user
<trim prefix="where" prefixOverrides="and">
    <if test="name !=null">
        name like concat('%',#{name},'%')
    </if>
    and create_time &lt;= #{createTime}
</trim>
  1. 使用<![CDATA[]]>,因为CDATA 部分中的所有内容都会被解析器忽略,所以建议使用<![CDATA[]]>

SELECT *  FROM user
<trim prefix="where" prefixOverrides="and">
    <if test="name !=null">
        name like concat('%',#{name},'%')
    </if>
    <![CDATA[ and create_time <= #{createTime} ]]>
</trim>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚霞虽美不如你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值