使用 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()之后的可能会在字符串前面或最后出现逗号 视情况而定,要去除逗号
重点是要理解批量删除的思想,在此基础上才能实现其他批量操作