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$'



个人总结:#可以匹配所有类型,$只能匹配整型,'$$'匹配字符型

推荐使用 '$id$'这种,因为在myeclipse调试时,如果配置了log4j.properties文件的话,执行sql语句时,在控制台可以看到 '$id$'的值,而#id#只显示是问号,如id=? ;$id$如果id是整型,则会显示id的值,如果是其它类型,也只会显示 ?



删除多个主键需注意的问题,下面是我的代码,ibatis+mysql
前台部分js代码,通过url调用后台方法,执行sql语句删除
var tIds='a','b','c';
$.ajax({  
url:"EmployeeAction/deleteEmployee.action?param.KEYjobno="+tIds,
type : "post",
dataType:"json",
success:function(data){

f_tipMessage("删除成功");
grid.deleteSelectedRow();//删除选中的grid行,只删除表格中的一行,不能起到删除数据作用,与后台sql删除一起使用
//f_search();
},
error:function(){
   alert("删除失败,请检查网络设置!");
}
});



ibatis.xml文件 :
<delete id="delete" parameterClass="map">
      delete from employee where KEYjobno in ($KEYjobno$)    
 </delete>
执行删除后的语句
 delete from employee where KEYjobno in ('a','b','c') 


注意:想说一下的是,操作多个主键时,只能用$key$这种形式,不能用'$key$'或#key#,
第一种'$key$',执行后的sql语句是这样的:
delete from employee where KEYjobno in (''a','b','c'') 
在主键的前后多了一个单引号


第二种#key#,执行后把数据库的内容全部删除,所以操作多主键时一定不能用这种,执行后的语句是这样的:

delete from employee where KEYjobno in (KEYjobno) 


虽然我是初学者,但这都是自己实操的经验总结,绝对原创


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值