mybatis中怎么使用like形成动态模糊查询,错误使用CONCAT拼接sql的看过来

这个问题曾经困扰了我很长时间,因为我需要动态参数的模糊查询,上网找了很多,都说用CONCAT但我用ORACLE的时候发现并不能满足我的需求。


今天就说一下,我是怎么解决这个问题的。


其实我当时为了拼sql一经头昏脑胀了,但是你想想看,为什么一定要在sql中拼凑sql呢?

 


直接连‘%value%’当作一个整体传参,你想到了吗?让你远离拼接sql实现更强大的功能。

但一定要注意判断在参数中不能有特殊字符‘’,不然就会造成SQL注入,一定要注意细节

 


这是重点:你是不要要问不在sql中拼凑sql那该怎么拼凑一段sql呢?我们一起来看看

需要的格式是这样的:

 1、select
       *
 from "product_detail" where product_name like ‘%${value}%’

其中value是动态的,当我们在sql中拼凑时应该使用CONCAT,但oracle中只能拼凑带单引号的。那问题来了


加了单引号,我们会发现,没法动态获取参数,为解决这个问题,来看看下面是怎么做的吧。

 

2、 select
       *
 from "product_detail" where product_name like ${value}

好像两段sql没什么区别,但就是一个小细节能决定成败,这种做法最明显的就是把‘%${value}%’

当成一个整体当作参数,是不是瞬间觉得好low?

 


别再用函数去拼sql,还不一定适用,当sql无法实现就用java吧,骚年。。。。

特别注意;在这块一定要判断参数中不允许有特殊字符引号。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值