ibatis 中$field$与#field#的区别

来源:互联网 发布:电脑软件快捷键冲突 编辑:程序博客网 时间:2024/05/18 09:27

注意:

1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by 'id',这当然会报错.

2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了.
3.#方式能够很大程度防止sql注入.
4.$方式无法防止sql注入.
5.$方式一般用于传入数据库对象.例如传入表名.

6.一般能用#的就别用$.

在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为:#可以进行与编译,进行类型匹配,而$不进行数据类型匹配。例如: 
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 0
原创粉丝点击