系统框架用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/1218679http://www.cnblogs.com/langtianya/archive/2013/03/19/2969557.htmlhttp://my.oschina.net/u/989066/blog/156627
时间: 2024-09-30 00:03:15