注意:
mybatis對於批量刪除的過程中,參數為一個數組的情況,我們采用mybatis提供的<foreach>標簽將參數進行逐個與數據庫id進行比對,完成批量刪除操作。
使用mybatis將數據庫中的記錄
1.前台jsp頁面,將要刪除的記錄選中,通過將記錄的id對記錄進行區別,請求方法為post; 2.使用jQuery,js對頁面進行全選,或全部清除選擇。 3.servlet控制層,通過req對象獲取id,然后將存放id數組進行參數類型轉換,轉為int[]; 4.sevice服務層,使用數據庫連接池,獲取SqlSession實例對象,由session對象獲取Mybatis框架創建的接口的實例,通過聲明接口中處理批量刪除的方法,配置接口對應的xml配置文件。
1,前台jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>商品列表</title> <script type="text/javascript" src="/mybatis_demo1/js/jquery-1.11.2.js"></script> <script type="text/javascript"> $(function(){ $("#checkAll").click(function(){ var ckd=this.checked; if(ckd) $("input[name='checkedPrdId']").prop("checked",true); else $("input[name='checkedPrdId']").removeProp("checked"); }); }); </script> <style type="text/css"> table,table td{ border:1px solid black; } table { border-collapse: collapse; } table td{ width: 200px; height: 20px; } </style> </head> <body> prdList <c:if test="${not empty prdList}"> <form action="/mybatis_demo1/prdServlet?flag=batchDelete" method="post"> <input type="submit" value="批量刪除"/>${msg} <br/> <table> <thead> <tr> <td><input type="checkbox" id="checkAll" /></td> <td>商品編號</td> <td>商品類別</td> <td>商品名稱</td> <td>商品價格</td> <td>商品描述</td> </tr> </thead> <tbody> <c:forEach items="${prdList}" var="prd"> <tr> <td><input type="checkbox" name="checkedPrdId" value="${prd.prdId}" /></td> <td>${prd.prdId}</td> <td>${prd.typeId}</td> <td>${prd.prdName}</td> <td>${prd.price}</td> <td>${prd.desc}</td> </tr> </c:forEach> </tbody> </table> </form> </c:if> </body> </html>
3.service層實現
package com.xixi.demo.service; import com.sun.javafx.collections.MappingChange.Map; import com.xixi.demo.common.Constants; import java.util.HashMap; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.xixi.demo.common.DBUtils; import com.xixi.demo.dao.ProductMapper; import com.xixi.demo.vo.ProductInfo; public class ProductService { /** * *獲取所有產品 * * @return */ public List<ProductInfo> getAllProducts() { ... } /** * * 商品檢索 * * @param condition * @param pageNum * @return */ public List<ProductInfo> search(HashMap<String, Object> condition, int pageNum) { ... } /** * * 獲取總頁數 * * @param condition * @return */ public int getPageCount(HashMap<String, Object> condition) { ... } /** * 批量刪除 * * @param prdId * @return */ public int batchDelete(int[] prdId) { SqlSession session = DBUtils.getSqlSession(); ProductMapper prdMapper = session.getMapper(ProductMapper.class); int count=0; try { count = prdMapper.batchDelete(prdId); session.commit(); } catch (Exception e) { session.rollback(); e.printStackTrace(); } finally { session.close(); } return count; } }
4.DAO層的mybatis框架接口實現
package com.xixi.demo.dao; import java.util.HashMap; import java.util.List; import com.sun.javafx.collections.MappingChange.Map; import com.xixi.demo.vo.ProductInfo; public interface ProductMapper { //獲取所有的產品 List<ProductInfo> getAllProducts(); //通過某一個產品編號查詢產品信息 ProductInfo getInfoById(Integer prdId); //錄入新的商品 int saveInfo(ProductInfo info); //檢索商品 List<ProductInfo> search(HashMap<String, Object> condition); //獲取產品記錄條數 int getRecordCount(HashMap<String, Object> condition); //批量刪除 int batchDelete(int[] prdId); }
5.DAO層的mybatis框架接口對應的xml配置文件的實現
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<delete id="batchDelete" parameterType="_int[]">
delete from products where productId IN
<foreach collection="array" open="(" close=")" separator="," item="id">#{id}</foreach>
</delete>
</mapper>
轉載於 https://www.jianshu.com/p/c1117e34a7e8
作者