iBATIS中$和#的区别
2010-09-26 18:40
399 查看
我们在使用iBATIS时会经常用到#这个符号。
比如:
sql 代码
select
*
from
member
where
id =#id#
然后,我们会在程序中给id这个变量传递一个值,iBATIS会自动将#id#转成我们传递的内容。
但是我最近碰到一个奇怪的问题。我在批量删除或修改的时候,居然SQL失效了。
SQL如下:
sql 代码
update
user
set
flag=#flag#
where
id
in
(#id#)
delete
from
user
where
id
in
(#id#)
传递的id为1,2,3。但是数据却没有任何的修改。
原来原因就是这个#的问题。因为iBATIS默认会把“#”中间的变量作为字符串来处理。这样,就会出现这样的SQL
sql 代码
update
user
set
flag='1'
where
id
in
('1,2,3')
delete
from
user
where
id
in
('1,2,3')
这样的SQL数据库当然是不会执行的。那我们只有绕开iBATIS了吗?
其实不用,iBATIS其实还提供了另外一种方式,那就是使用$来传递值。你使用$将你的变量括起来,iBATIS不会给这个变量做任何的处理,直接生成你要的SQL
sql 代码
update
user
set
flag=$flag$
where
id
in
($id$)
update
user
set
flag=1
where
id
in
(1,2,3)
delete
from
user
where
id
in
($id$)
delete
from
user
where
id
in
(1,2,3)
说通俗一点就是:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
比如:
sql 代码
select
*
from
member
where
id =#id#
然后,我们会在程序中给id这个变量传递一个值,iBATIS会自动将#id#转成我们传递的内容。
但是我最近碰到一个奇怪的问题。我在批量删除或修改的时候,居然SQL失效了。
SQL如下:
sql 代码
update
user
set
flag=#flag#
where
id
in
(#id#)
delete
from
user
where
id
in
(#id#)
传递的id为1,2,3。但是数据却没有任何的修改。
原来原因就是这个#的问题。因为iBATIS默认会把“#”中间的变量作为字符串来处理。这样,就会出现这样的SQL
sql 代码
update
user
set
flag='1'
where
id
in
('1,2,3')
delete
from
user
where
id
in
('1,2,3')
这样的SQL数据库当然是不会执行的。那我们只有绕开iBATIS了吗?
其实不用,iBATIS其实还提供了另外一种方式,那就是使用$来传递值。你使用$将你的变量括起来,iBATIS不会给这个变量做任何的处理,直接生成你要的SQL
sql 代码
update
user
set
flag=$flag$
where
id
in
($id$)
update
user
set
flag=1
where
id
in
(1,2,3)
delete
from
user
where
id
in
($id$)
delete
from
user
where
id
in
(1,2,3)
说通俗一点就是:
$中间的变量就是直接替换成值的
#会根据变量的类型来进行替换
比如articleTitle的类型是string, 值是"标题"的时候
$articleTitle$ = 标题
#articleTitle# = '标题'
相关文章推荐
- ibatis 中 $与#的区别
- ibatis中 $与# 的区别
- ibatis 中 $与#的区别
- ibatis $与#的区别
- 选用Ibatis和Hibernate的区别
- mybatis和ibatis的区别
- Hibernate与ibatis区别
- ibatis_mybatis_hibernate_(1)区别介绍
- 浅谈Hibernate和Ibatis区别
- Ibatis中SqlMapClientTemplate和SqlMapClient的区别
- 选用Ibatis和Hibernate的区别1
- ibatis中#和$的区别
- Mybatis与Ibatis区别
- Ibatis与Hibernate的区别 (转载)
- ibatis中 #和$ 区别
- 【转】IBatis和Hibernate区别
- iBatis三个版本的区别
- 从hibernate转向ibiats之ibatis基础知识(hibernate与ibatis区别)
- ibatis 中 $和#的区别
- ibatis的$与#的区别