网上搜索的两个文章:
文章一
Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确。
经过尝试,给出三种可靠可用的写法:
select * from person where name like "%"#{name}"%"
select * from person where name like '%'||#{name}||'%'
select * from person where name like '%${name}%'
文章二
三种写法对比后,第一种属于预编译SQL,后两种都不是,因此推荐使用第一种写法。
--all 用$不能防sql注入
select * from user where name like '%${name}%'
--mysql,oracle (db2的concat函数只支持2个参数)
select * from user where name like concat('%',#{name},'%')
--oracle,db2
select * from user where name like '%'||#{name}||'%'
--SQL Server
select * from user where name like '%'+#{name}+'%'
--据说这种是预编译,有空测下
select * from user where name like "%"#{name}"%"
总结
发现预编译的好象不行。