mysql where trim_mybatis-动态sql-trim、where、set

本文详细介绍了MyBatis中where、set和trim标签的作用及用法。where标签用于动态插入SQL的where条件,避免空条件时生成无效的SQL。set标签用于动态设置SQL的更新字段,处理逗号分隔问题。trim标签则提供了前缀和后缀的添加与移除功能,用于更灵活地构建SQL语句。注意在使用prefixOverride时,AND和OR后的空格不能省略,防止误匹配。
摘要由CSDN通过智能技术生成

1. where标签的作用:如果该标签包含的元素中有返回值,就插入一个where;如果where后面的字符是以AND和OR开头的,就讲他们剔除。

int findUserByWhere(@Param("name") String name, @Param("phone") String phone);

SELECT * FROM user

AND name LIKE concat('%', #{name}, '%')

OR phone=#{phone}

如果两个if条件不满足的时候,where标签包着的这一段代码就会被剔除掉,在SQL中就不会出现这一段代码。

2.set标签的作用:如果该标签包含的元素中有返回值,就插入一个set;如果set后面的字符串是以逗号结尾的,就将这个逗号剔除。

int updateUser(@Param("user") User user);

UPDATE user

email=#{user.email},

phone=#{user.phone},

WHERE uid=#{user.uid}

注意最后的WHERE uid=#{user.uid}不可省略的,如果set包含的内容为空,只能避免最后遗留的逗号问题

3.trim用法:

标签属性:

prefix:当trim元素包含内容时,会给内容增加prefix指定的前缀

prefixOverride:当trim元素包含内容时,会把内容中匹配的前缀字符串去掉。

suffix:当trim元素包含内容时,会给内容增加prefix指定的后缀

suffixOverride:当trim元素包含内容时,会把内容中匹配的后缀字符串去掉。

和标签都可以用trim标签实现,并且底层就是通过TrimSqlNode实现的。

标签对应的trim实现:

例子:

SELECT * FROM user

AND NAME LIKE concat('%', #{name}, '%')

OR phone=#{phone}

标签对应的trim实现:

例子:

UPDATE user

email=#{user.email},

phone=#{user.phone}

WHERE uid =#{user.uid}

提示:

prefixOverride中AND和OR后面的空格不能省略,为了避免匹配到andes或orders等单词。实际上prefixOverride包含"AND""OR""AND\n""OR\n""AND\r""OR\r""AND\t""OR\t"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值