ibatis #和$区别(非原创)

ibatis #和$区别(非原创)

在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.#是把传入的数据当作字符串,如果 order by #field# ,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..

2.$传入的数据直接生成在sql里,如果 order by $field$ ,如$field$ 传入的是id,则sql语句生成是这样,order by id, 这就对了.
3.$方式一般用于传入数据库对象.例如传入表名. 如果传入动态sql或条件则注意防sql注入

4.#方式一般用于传入插入/更新的值或查询/删除的where条件

$中间的变量就是直接替换成值的

#会根据变量的类型来进行替换

比如articleTitle的类型是string, 值是"标题"的时候

$articleTitle$ = 标题

#articleTitle# = '标题'

猜你喜欢

转载自jcair.iteye.com/blog/1602347