ibatis中动态SQL_delete

本文介绍使用IBATIS框架通过两种方式实现批量删除操作的方法。一种方式是使用Map传递参数,另一种方式则是利用List传递参数。这两种方法都通过XML配置文件定义SQL语句,并在DAO层提供相应的实现。

其实这个不是动态的,不过要写就把CRUD全写一边了,因为IBATIS很简单,就不放

JAVA代码,直接上XML

<delete id="delete_role_id" parameterClass="java.util.Map">
	delete myivr_trole where ROLEID in
	<iterate open="(" close=")" conjunction="," property="ids">
		#ids[]#
	</iterate>
</delete>

 这样的话,你在DAO中写

/**
 * 根据角色ID删除角色
 * @param ids 角色ID
 * @return int 影响行数:如果delete N条就返回N 
 */
public Integer deleteRoleById(Integer... ids) {
	Map<String,Object> map = new HashMap<String, Object>();
	map.put("ids", ids);
	return (Integer)getSqlMapClientTemplate().delete("role.delete_role_id", map); 
}
 

用Map传参数那么,iterate里面的property属性一定要和Map中的key相同,但是你还可以有更方便的选择,如下:

<delete id="delete_user_id" parameterClass="java.util.List">
	delete myivr_tuser where USERID in
	<iterate open="(" close=")" conjunction=",">
		#ids[]#
	</iterate>
</delete>

 再看DAO代码

public Integer deleteUserById(Integer... ids) {
	return super.getSqlMapClientTemplate().delete("user.delete_user_id", Arrays.asList(ids));
}
 

方便吧,不需要自己构建一个Map里,而且XML里面的#ids[]#名称可以顺便写的,呵呵

不过需要注意一下,这里的parameterClass一定要是java.util.List不能是java.util.ArrayList,因为ibatis内部用了反射机制,他不认Arrays.asList,比较class的出错,但是写List就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值