图书管理系统:使用sql拼装实现批量删除

1、批量删除之前,首先需要实现的是全选全不选

        //完成全选,全不选的功能
        //对于dom原生的属性,应当使用prpo进行修改,而对于自定义的属性使用attr进行修改
        //#checkbox_all:这个是全选框,.check_item是普通的选框
        $("#checkbox_all").click(function(){
            $(".check_item").prop("checked",$(this).prop("checked"));
        });
        $(document).on("click",".check_item",function(){
            var flag = $(".check_item:checked").length == $(".check_item").length;
            $("#checkbox_all").prop("checked",flag);
        });

2、完成全选后,给批量删除按钮加点击事件,发送ajax请求

        //批量删除图书
        $("#delete_batch_cart").click(function(){
            //首先定义一个空字符串
            var bIds = "";
            //遍历每一个选中的普通选框,拿到要删除的图书的ID,拼成一个字符串,每个ID之间用“-”分隔。
            $.each($(".check_item:checked"),function(){
                bIds += $(this).parents("tr").find("td:eq(1)").text()+"-";
            });
            //去掉最后一个多余的“-”
            bIds = bIds.substring(0,bIds.length-1);
            $.ajax({
                url:"${APP_PATH}/deleteBatchBook",
                type:"GET",
                data:"bIds="+bIds,
                success:function(result){
                    location.reload(true);
                    alert("批量删除成功!");
                }
            });
        });

3、controller拿到这个字符串以后进行分割,
虽然也可以一个一个的删除,但是不建议这样做,这样会避免频繁操作数据库,从而影响数据库性能。所以拼装sql语句进行批量删除
注意一点:在传入到mapper.xml中参数是一个List,所以在传入之前需要把字符串变为一个集合。

    //批量删除图书信息
    @RequestMapping("/deleteBatchBook")
    @ResponseBody
    public Msg deleteBatchBook(String bIds){    
        List<Integer> list = new ArrayList<Integer>();
        if(bIds.contains("-")){
            String[] bids = bIds.split("-");
            for(String bid : bids){
                int bId = Integer.parseInt(bid);
                list.add(bId);
            }
        }
        bookService.deleteBook(list);
        return Msg.success();
    }

4、mapper.xml中的实现

注意:

parameterType=”java.util.List”是传入参数的类型。
collection=”list”,声明循环的是List,一定是list,不能是你传入的参数,例如虽然你实际传入的list的名字是headerList,但是写的时候也是list;
item=”bId”是每个小项,自己取名,下面会用到。 open=”(” close=”)” index=”index”
separator=”,” :这个是用来拼装成in(bId1,bId2…..)这种形式的。一定是逗号。因为in语句中使用的是逗号。

    <!-- 使用sql语句进行批量删除 -->
    <delete id="deleteBook" parameterType="java.util.List">
        delete from book where b_id in
        <foreach collection="list" item="bId" open="(" close=")" index="index" separator=",">            
             #{bId}
        </foreach>  
    </delete>

最后:批量插入也是使用相同的方法

猜你喜欢

转载自blog.csdn.net/ilikejj0/article/details/81114354