学习笔记*批量批量删除功能的实现
前言:该实现思路基于使用C3P0Util数据库连接方式。
如:<td style="cursor:hand"; width="10%"; align="center"> 在目录列表列
<input type="checkbox" id="ckAll" onclick="checkAll()" />
</td>
<c:forEach items="${books }" var="b">
<td style="cursor:hand"; width="10%"; align="center"> 在显示数据列
<input type="checkbox" name="ids" value="${b.id }" />
</td>
</c>
1、使用点击事件调用checkAll()
2、方法中要做什么事?
获得chAll元素,得到他的选中状态
获得所有复选框的元素ids
循环每一个复选框,并给其赋值(即ckAll的选中状态值)
----------------js实现功能过程--------
如://全选/全不选
function checkAll(){
//得到ckAll元素,并得到它的选中状态
var flag = document.getElementById("ckAll").checked;
//得到所有的ids复选框元素
var ids = document.getElementByName("ids");
//循环给每一个复选框赋值
for(var i=0; i<ids.length; i++){
ids[i].checked = flag; //把ckAll元素的状态赋值给每一个ids[i]的元素
}
}
----------------批量删除功能实现--------
步骤:
1、jsp表单页面中添加一个按钮(值为:批量删除),代码如下:
<button type="button" id="del" name="del" value="批量删除" onclick="delAllBooks()">批量删除
</button>
2、js文件中实现delAllBooks()方法
//批量删除
function delAllBooks(){
//得到所有复选框的元素
var ids = document.getElementsByName("ids");
var str="";
//循环得到选中的复选框的id
for(var i=0; i<ids.length; i++){
if(ids[i].checked){
str+="ids="+ids[i].value+"&"; //获取选中的id的值全都传给delAllBooksServlet
}
}
str = str.substring(0, str.length-1); //截取所有的字符串再次赋值给str,效果为:ids=1001&ids=1002&ids=1003
if(str != "")
location.href="${pageContext.request.contextPath }/delAllBooksServlet?"+str;
}
3、处理批量删除,新建一个服务类DelAllBooksServlet,代码如下:
//得到所有的id
String[] ids = request.getParameterValues("ids"); //ids为表单复选框的名称,实际上是关联id
//调用删除业务
BookServiceImpl bs = new BookServiceImpl();
bs.deleAllBooks(ids);
//分发转向
//使用的是相对路径
request.getRequestDispatcher("bookListServlet").forward(request, response);
4、处理服务层,在业务层新建一个方法deleAllBooks,调用数据访问层的删除方法deleAllBooks(),代码如下:
public void deleAllBooks(String[] ids){
bookDao.deleAllBooks(ids);
}
5、处理业务层,在数据访问层新建一个方法deleAllBooks,具体实现删除方法deleAllBooks(),代码如下:
//批量删除
public void deleAllBooks(String[] ids){
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
Object[][] params = new Object[ids.length][];
for(int i=0; i<params.length; i++){
params[i] = new Object[]{ids[i]}; //循环给每一个一维数组中的元素赋值,值是id
}
String sql = "delete from book where id=?";
qr.batch(sql, params);
}