Java EE 如何实现批量删除功能

什么是批量删除?

批量删除说简单一点就是在删除单个记录的基础上多写一个for循环语句。在for循环语句中依次执行单个删除的操作,最后达到批量删除的效果。那么怎么才能实现批量删除呢?

第一步 写一个checkbox,也就是复选框

选中复选框表示我想要删除这一行的内容,在数据库中,删除一条记录的话首先得传递一个参数,也就是它的主键,一般也就是id,no(number)之内的,然后在复选框后面的一条记录一般是以主键打头,例如:
我想进行批量删除操作就要用到复选框checkbox,然而我想取的主键值又在复选框后面,怎么将他们绑定在一起呢?

第二步 利用value将checkbox与id绑定在一起

<td><input type="checkbox" name="checkbox" value="${s.bno}"/></td>
利用value可以将复选框后面的主键的信息绑定到复选框中,这样选中复选框既可以表示我要删这条记录,同时我也获取了删除这条记录的主键信息。

第三步 利用js取出选中了的checkbox中的值

function deleteAllBook(){
  // 获取input标签下type类型为checkbox的所有选中的checked框 
     var option = $("input:checkbox:checked"); 
  //取出checked框中的值
     var checkedId = ""; 
     var boo=true;  
     for (var i = 0, len = option.length; i < len; i++) { 
         if (boo) {   
                 boo=false; 
                 checkedId += option[i].value; 
            } 
         else
             checkedId += ","+option[i].value;  
     } 
  var flag = window.confirm("你确定要删除这条记录吗");
   //alert(checkedId);
  if(flag){
  window.location.href = "deleteSomeBookServlet?bno="+checkedId;
  }
 }

checkedld中就存放这你选择的复选框中的id值,并以逗号分隔,例如:2,5,9

第四步 利用Servlet中获取传递过来的参数并进行分割

上一步中传递过来一个名为bno的参数,其值为checkedld,数据类型为String
首先,我们请求获取参数,来接收这个参数,并放到一个变量中存储。

String bno=request.getParameter("bno");
由于bno是String类型,并且含有逗号分隔符,我们自然而然想到了split()函数分割String为一个String[]数组。
String[] b=bno.split(",");

接上例:如果是2,5,9,分割后会变成{2,5,9}

第五步 利用for循环语句依次调用DAO层删除功能的函数

//首先new一个bookdao对象,然后写for循环,利用bookdao调用DAO层删除函数
BookDAO bookdao=new BookDAO();

boolean flag=false;

for(int  c=0;c<b.length;c++) {
    flag=bookdao.deleteSomeBook(b[c]);//删除成功则返回true
   }

if(flag){//如果删除成功,利用Session向页面返回成功信息,并重定向至ShowBookServlet
    request.getSession().setAttribute("err", "删除成功");
    response.sendRedirect("ShowBookServlet");
       }else{//如果删除失败,利用Session向页面返回错误信息,并请求转发至ShowBookServlet
        request.getSession().setAttribute("err", "删除失败");
        request.getRequestDispatcher("ShowBookServlet").forward(request, response);
       }
第六步 DAO层删除函数的编写   

首先你得明白上面传过来的参数bno是String类型的,其他的代码跟普通的删除一样;

public boolean deleteSomeBook(String array) {
   conn=getConnectionn();
   try {
   pStat =conn.prepareStatement("delete from t_book where bno = ?");
   pStat.setString(1, array);
   int cnt=pStat.executeUpdate();
   if( cnt>0 ) return true;
   else return false;
   }catch (Exception e) { return false; }
   finally{ close(); }  
  }


猜你喜欢

转载自blog.csdn.net/qq_37701443/article/details/79981163