Mybatis-模糊查询的俩种方法
方法一: 使用CONCAT(like concat)
like concat (参数一,参数二,参数三):用于模糊查询,不推荐直接用like,所以用concat连接
1.参数一: 第一个基本上用 ‘%’
2.参数二: 传入的参数
3.参数三: 第三个基本上用 ‘%’(和第一个对应)
<if test="blockPushLog.blockName!=null and blockPushLog.blockName!=''">
and b.BLOCK_NAME like CONCAT('%',#{blockPushLog.blockName},'%')
</if>
方法二: 使用bind模糊查询(推荐优先使用)
bind(参数一,参数二):用于模糊查询
- 参数一: name:自定义名称,变量名,用于赋予like后面的名称
- 参数二: value: 传入的参数
<if test="null != username and '' != username">
<bind name="username" value="'%'+username+'%'"/>
username like #{username}
</if>
<if test="null != nickname and '' != nickname">
<bind name="nickname" value="'%'+nickname+'%'"/>
and nickname like #{nickname}
</if>
<if test="null != address and '' != address">
<bind name="address" value="'%'+address+'%'"/>
and address like #{address}
</if>
两者区别
like concat :
(1).使用concat函数连接字符串,在mysql中这个函数支持多个参数,但是其他数据库不一定支持多个参数,因而兼容性弱;
(2)因为直接使用:(’%’+参数+ ‘%’),存在sql注入的情况下,也可以把你写的sql语句看成不同的部分分割来对待,即安全性差,容易遭到攻击
bind:(推荐优先使用)
(1) 各数据库通用,兼容性强
(2) 可以预防SQL注入(比like concat强),因而安全性也强
注:Oracle 数据库中写法略有区别
like concat(concat('%',#{xxxxx},'%'))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具