• 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

     
  • 相关阅读:
    struts2增删改查---layer---iframe层---通配符---国际化
    struts2增删改查---layer---iframe层
    struts2相关简单介绍
    直接在数据库客户端插入当前时间
    STL find() ,还是挺重要的
    两种应该掌握的排序方法--------1.shell Sort
    程序员的工具箱
    计算机科学中最重要的32个算法
    函数的重载与 泛型(generic)有什么不同?
    ruby编程语言-学习笔记5(第5章 语句和控制结构)
  • 原文地址:https://www.cnblogs.com/dupeilin/p/13298099.html
Copyright © 2020-2023  润新知