使用 hibernate 进行 批量删除

 

 

 

 

批量删除 js 代码

function deleteAll(){
	var url = "batchDelete.action";
	var n = $(":input[name='check']");
	var len = n.length;
	var batch = new Array();
	//获取所有被选中的复选框,并将其value赋值给数组
	for(var i = 0; i < len; i++){
		if(n[i].checked){
			batch[i] = n[i].value;
		}
	}
       //将数组转化为字符串
	batch = batch.toString();
	args = {"batch":batch};
	if(confirm("你确定要执行该操作吗?")){}
	$.post(url , args , function(data){
		if(data.retcode == "0"){
			alert("操作成功");
			location.reload();
		}else if(data.retcode == "101"){
			alert("操作失败!");
			return false;
		}else {
			alert(data.errorMsg);
		}
	});
}
//生成where子句
private String whereSql(int length) {
		StringBuilder sb = new StringBuilder(" id in(");
		for(int i = 0; i < length; i++) {
			sb.append("?");
			if(i < length - 1) {
				sb.append(",");
			}
		}
		sb.append(")");
		return sb.toString();
	}
private int batch(String batch , String hql) throws DaoException{
           //从前台传过来的batch字符会在前面出现“,”,去除最前面的逗号
		if (batch.startsWith(",")) {
			batch = batch.substring(1);
		}
		String[] b = batch.split(",");
		Object[] bat = new Object[b.length];
            //因为出现类型转化异常 ,所以要将String数组转化为Integer数组
		for (int i = 0; i < b.length; i++) {
			bat[i] = Integer.parseInt(b[i]);
		}
		hql += whereSql(bat.length);
           //调用方法,批量删除
		return executeUpdate(hql, bat);
	}


	@Override
	public int batchDelete(String batch) throws DaoException {
		String hql = "delete from Email where ";
		return batch(batch, hql);
	}
注意:1、一定要将js中的数组(保存所有被选中的复选框的value)toString()之后再传到action中
2、toString()之后的可能会在字符串前面或最后出现逗号 视情况而定,要去除逗号
重点是要理解批量删除的思想,在此基础上才能实现其他批量操作
posted @ 2022-04-29 19:05  码猿笔记  阅读(272)  评论(0编辑  收藏  举报