1. 程式人生 > >圖書管理系統:使用sql拼裝實現批量刪除

圖書管理系統:使用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>

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