标签:
系统框架用ibatis,开发中ibatis配置文件中执行order by #orderByClause# ,怎么搞都没有效果,
后面改成 order by $orderByClause$,OK,问题解决,然后就研究了下 ibatis 中# 和$ 这两个标签的区别。
# 会对参数进行数据类型的匹配,
比如 select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是‘id‘类型,如果id为整型,那么#id#就是id类型。
$ 不进行数据类型匹配
比如 select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = ‘$id$‘
$ 的作用实际上是字符串拼接,将字符串原样输出,
使用场景
1 order by #orderByClause#;
2 select * from $tablename$;
3 select * from user where Name = ‘%$userName$%’(模糊查询写法)
注意地方
$ 便签很容易被sql注入进来,谨慎使用,
# 可防止sql注入,参数动态参数变量,效率比较高。
参考文章
http://jsczxy2.iteye.com/blog/1218679
http://www.cnblogs.com/langtianya/archive/2013/03/19/2969557.html
http://my.oschina.net/u/989066/blog/156627
标签:
原文地址:http://www.cnblogs.com/catalina-/p/4702973.html