mybatis使用模糊查询 like,欲动态指定模糊查询某一个字段
查询不到结果
我的情况是这样的:
匹配的字段名和字段取值都是通过参数传递进来的
我查询不到结果的写法是这样的:
where #{keyField} like "%"#{keyValue}"%"
之前以为是后面拼接百分号的问题
改成 如下:依然不行
where #{keyField} like concat('%',#{keyValue},'%')
解决:字段名前面的#换成$
where ${keyField} like concat('%',#{keyValue},'%')
$与#的区别:
$是直接成为sql里的一部分,没有 ' ',尽量避免使用$,防止sql注入
#相当于在值的基础上加上 ' '
我这里是迫不得已使用$,来动态指定查询的字段名
这样以上两种拼接百分号都是可以的,后者使用数据库的函数拼接,稍微增加了数据库的运算