1.ibatis中 # 跟 $的区别?
select * from member where id =#id# ------ 适用于传参问题 可以直接传属性值 也可以传javabean ibatis会自动解析
问题:iBATIS默认会把“#”中间的变量作为字符串来处理
解决问题:
使用$将你的变量括起来,iBATIS不会给这个变量做任何的处理,直接生成你要的SQL
简单的说:
使用#号传值 ibatis默认会把#号中间的变量作为字符串来处理。
使用$号传值 ibatis不会给这个变量做任何处理 直接生成你想要的SQL。
$方式一般用于传入数据库对象.例如传入表名;
一般能用#的就别用$ ; 性能问题吧
2.Ibatis中使用like ‘%#filedName#%’ 时,有什么问题?
在xml映射文件中,如果直接按如上写法,会报异常:java.sql.SQLException: Invalid argument in JDBC call: parameter index out of range: 1。
所以一般会采用如下两种方式:
1) 将#换成$,如like ‘%$ filedName $%’,这样就没有问题了..
2) 采用字符串联接符||,如:like ‘%’||# filedName #||’%’
select * from member where id =#id# ------ 适用于传参问题 可以直接传属性值 也可以传javabean ibatis会自动解析
问题:iBATIS默认会把“#”中间的变量作为字符串来处理
解决问题:
使用$将你的变量括起来,iBATIS不会给这个变量做任何的处理,直接生成你要的SQL
简单的说:
使用#号传值 ibatis默认会把#号中间的变量作为字符串来处理。
使用$号传值 ibatis不会给这个变量做任何处理 直接生成你想要的SQL。
$方式一般用于传入数据库对象.例如传入表名;
一般能用#的就别用$ ; 性能问题吧
2.Ibatis中使用like ‘%#filedName#%’ 时,有什么问题?
在xml映射文件中,如果直接按如上写法,会报异常:java.sql.SQLException: Invalid argument in JDBC call: parameter index out of range: 1。
所以一般会采用如下两种方式:
1) 将#换成$,如like ‘%$ filedName $%’,这样就没有问题了..
2) 采用字符串联接符||,如:like ‘%’||# filedName #||’%’