浏览 4321 次
锁定老帖子 主题:ibatis模糊查询
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-27
为了防止SQL注入,ibatis使用模糊查询时也要避免使用$$来进行传值.下面是三个不同数据库的ibatis的模糊查询传值
mysql: select * from stu where name like concat('%',#name #,'%') oracle: select * from stu where name like '%'||#name #||'%' SQL Server:select * from stu where name like '%'+#name #+'% 这个还没测试 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-29
用函数,不用like,比如oracle用instr(field,?)>0
|
|
返回顶楼 | |
发表时间:2009-05-29
用函数的速度应该要慢些!
|
|
返回顶楼 | |
发表时间:2009-05-29
mmwy 写道 用函数,不用like,比如oracle用instr(field,?)>0 吧!!!!!!! |
|
返回顶楼 | |
发表时间:2009-05-31
j2ee_yohn 写道 用函数的速度应该要慢些!
在自己的一张表上用两条sql做了个查询计划 select * from t_user where loginname like '%x%' select * from t_user where instr(loginname,'x')>0 从查询计划上来看,都是一样的table access full,cost也都一致,没有明显的区别。 就算是慢,用函数也只是毫不足道的慢,根本不会有明显的感觉,或者是有量级的区别,但是,用函数代替like,从此不用为sql注入担心,值不得么? 另:据说oracle有个function index,如果你这个检索使用比较频繁,那就专门做做索引优化一下,还会慢吗? |
|
返回顶楼 | |
发表时间:2009-06-01
select * from stu where name like % $name$ %
|
|
返回顶楼 | |