mybatis利用动态SQL进行模糊查询, 但查询的结果始终是0行, 经过分析发现了问题所在
我使用的是mybatis-plus
key是模糊查询的字段如username, phone, email
value是模糊值, 如sss, 然后使用动态SQL组合成%sss%
其中<bind>
是为了拼接模糊查询的条件, 为了防止SQL注入不能使用%${}%的写法, 查询
先开启控制台打印mybatis执行的SQL语句
mybatis-plus即配置log-impl即可log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mybatis原生可自行搜索mybatis 显示执行的SQL语句
运行, 分析控制台输出结果
整体来说SQL没有写错, 模糊查询的%也连接正常
经过仔细发现username字段是一个字符串类型, 而平常写SQL条件查找好像从来没写过字符串, 我用navicat做了一下实验
到这里我才明白了, 条件的字段不能写成字符串, 因为以前没遇到过这样的问题
修改mapper, 先用动态SQL的if判断字符串
重启一下服务, 再进行查询
可以正常运行并能正确返回匹配模糊条件的结果
用SQL进行模糊查询, 需要注意
where后的字段必须 不能是字符串
like后的模糊条件 必须是字符串
原文:https://www.cnblogs.com/xfk1999/p/mysql-ambiguous-query.html