
mybatis模糊查询时,不想在调用方法时参数加%,所以我使用拼接参数的方 式设置Sql:

问题在于UserMapper.xml配置sql模糊查询语句出了问题。

倒数第二行是在测试类的时候模糊传入,没有问题

倒数第一行有问题,正确配置如下
select * from user where username like '%${value}%'

1 #表示sql模板的占位符,$表示将字符串拼接到sql模板中。
2 #可以防止sql注入,一般能用#就不用$。
3 ${}内部的参数名必须写value。
#是传递预编译的sql语句;$是普通传递sql语句(有sql注入的风险)
更加完美的解决方案 (既想防止sql注入,不想在测试类中写%匹配符)
<bind> 允许我们在 Sql语句以外创建一个变量,并可以将其绑定到当 前的Sql语句中
在MyBatis中进行模糊查询时,如果不想在调用方法时手动添加%,可以通过配置SQL来实现。使用#防止SQL注入,但无法避免%的添加。通过<bind>元素可以在SQL语句外创建变量并绑定,从而达到既防止注入又简化测试的目的。例如,正确的配置是使用<bind>标签来设置like语句中的通配符。
6050

被折叠的 条评论
为什么被折叠?



