MyBatis中,模糊搜索中单引号与双引号所引发的问题(已解决)

5 篇文章 0 订阅

        先说遇到的问题:在MyBatis中,经常会用到模糊查询,在自动生成的代码中Example中,无法满足要求的情况下,就需要在XML中增加自定义的SQL,在XML中编写SQL时关注单引号与双引号有两个地方需要注意;

        第一个:if条件判断中,test 条件用双引号,条件判断中,需要判断字符非空的用null 与单引号;例:

<if test="params.name != null and params.name != ''"></if>

        第二个:查询条件中,like 查询,分三条叙述:下面贴代码

1、错误的写法,这样写是查不到数据的

AND name like '%'#{params.name}'%'

2、正确的写法,直接使用 like关键字查询,前后的%号一定要用英文半角双引号引起来,没用试过不引起来会是什么效果

AND name like "%"#{params.name}"%"

3、模糊查询的另一种写法,使用concat() 关键查询,同样上代码

AND name like concat('%', #{params.name}, '%')

或

AND name like concat('%', #{params.name})

 

下面是正确写法的总结:一种是直接使用 like 关键字,另一种是使用 concat()函数

<if test="params.name != null and params.name != ''">
  AND name like "%"#{params.name}"%"
</if>

或

<if test="params.name != null and params.name != ''">
  AND name like concat('%', #{params.name}, '%')
</if>

结语:建议大家使用concat() 函数,效率较 like稍高

最后说,欢迎大家纠错和指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值