`
j2ee_yohn
  • 浏览: 168627 次
  • 性别: Icon_minigender_1
  • 来自: 湖南/株洲
社区版块
存档分类
最新评论

ibatis模糊查询

    博客分类:
  • web
阅读更多

为了防止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 #+'% 这个还没测试

分享到:
评论
5 楼 喜羊羊 2009-06-01  
select * from stu where name like % $name$ %
4 楼 mmwy 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,如果你这个检索使用比较频繁,那就专门做做索引优化一下,还会慢吗?
3 楼 j2ee_yohn 2009-05-29  
mmwy 写道
用函数,不用like,比如oracle用instr(field,?)>0

吧!!!!!!!
2 楼 j2ee_yohn 2009-05-29  
用函数的速度应该要慢些!
1 楼 mmwy 2009-05-29  
用函数,不用like,比如oracle用instr(field,?)>0

相关推荐

Global site tag (gtag.js) - Google Analytics