引言
在写mapper的时候,需要进行模糊查询,我写成如下图的形式,结果报了sql语句的错误,我检查半天,感觉应该是where语句出错了
于是问了度娘,参考了这位老哥的文章
https://blog.csdn.net/zhenwei1994/article/details/81876278
mybatis中对于使用like来进行模糊查询的几种方式:
1. 如果参数使用${...}形式
注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错
弊端:可能会引起sql的注入,平时尽量避免使用${...}
2. 如果参数使用#{...}形式
注意:用双引号将 % 括起来,不能使用单引号 '',不然会查不到任何结果。
3. 使用CONCAT()函数连接参数形式
结束语
这位老哥很细心,还附带两篇其他网友写的挺好的关于$与#的理解:
1、mybatis中的#{}和${}区别:
https://blog.csdn.net/u013552450/article/details/72528498/
2、prepareStatement的预编译和防止SQL注入:
https://www.cnblogs.com/yaochc/p/4957833.html