Mybatis實現一條sql語句實現數據庫數據批量刪除


 

注意:

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

作者 

黎濤note

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM