在 mysql 中模糊查询的写法:
select id,name,password from user where name like '%zs%'
但是在 Mybatis 中的这样写:
select id,name,password
from user
where name like %#{name}%
会报错,原因是缺少单引号
那加上单引号,这样写呢:
select id,name,password
from user
where name like '%#{name}%'
测试后发现,程序依然会报错,原因是:如果加上单引号,那么就当成是一个字符串,而#{ }写在字符串中不能识别,要改写成${ }这种形式。
即:
select id,name,password
from user
where name like '%${name}%'
通过使用$
的方式也可以实现,但是$的方式拼接的sql语句,不再是以占位符的形式生成sql,而是以拼接字符串的方式生成sql,这样做带来的问题是:会引发sql注入的问题。
其实我们借助函数就可以很好的解决这个问题
即:
select id,name,password
from user
where name like concat('%',#{name},'%')