SpringBoot+MyBatisPlus(5)—— 添加、删除、修改后分页显示

https://blog.csdn.net/Archer__13/article/details/127144489进行优化,对数据进行添加、删除、修改,并将数据分页显示。

一. 添加

1.Controller 

    @PostMapping("/manage/addBook")
    @ResponseBody
    public R addBook(Book book){
        try {
            boolean addResult = bookService.save(book);
            if(addResult){
                return R.success("添加成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return R.error("添加失败");
    }

2. 页面 

 ① 增加【添加】按钮

    <!-- 添加 -->
    <div>
        <button type="button" class="btn btn-primary" id="addBookBtn"><span class="glyphicon glyphicon-plus"></span> 添加</button>
    </div>

② 编写模态窗口:

<!-- 添加的模态窗口,使用的是bootstrap中已经定义好的样式 -->
    <div class="modal fade" role="dialog" id="addBookModal" >   <!-- modal用来标识模态窗口,fade是弹出时的动画效果(淡入淡出效果), role="dialog"标识对话框 -->
        <div class="modal-dialog" role="document" style="width: 85%;">  <!-- class="modal-dialog":模态窗口的第二层容器 -->
            <div class="modal-content">   <!-- class="modal-content":模态窗口的第三层容器 -->
                <div class="modal-header">  <!-- class="modal-header":模态窗口的头部 -->
                    <button type="button" class="close" data-dismiss="modal">   <!-- data-dismiss:通过点击该元素关闭指定目标,即点击叉号关闭class=modal的模态窗口 -->
                        <span aria-hidden="true">×</span>
                    </button>
                    <h4 class="modal-title">添加书籍</h4>
                </div>
                <div class="modal-body">   <!-- class="modal-body":模态窗口的主体内容 -->
                    <form class="form-horizontal" role="form" id="addBookForm">
                        <div class="form-group">
                            <label class="col-sm-2 control-label">书名<span style="font-size: 15px; color: red;">*</span></label>
                            <div class="col-sm-10" style="width: 300px;">
                                <input type="text" class="form-control" id="addBookName">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">价格<span style="font-size: 15px; color: red;">*</span></label>
                            <div class="col-sm-10" style="width: 300px;">
                                <input type="text" class="form-control" id="addBookPrice">
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">   <!-- class="modal-footer":模态窗口的页脚内容 -->
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" id="saveBookBtn">保存</button>
                </div>
            </div>
        </div>
    </div>

③ 给【添加】按钮绑定点击事件,当点击添加按钮时,弹出模态窗口,然后在模态窗口内输入信息;给模态窗口的【保存】按钮绑定单击事件,当点击保存按钮时,向后端发送请求

            //给添加按钮添加单击事件
            $("#addBookBtn").click(function (){
                //重置表单(表单内容清空)
                $("#addBookForm").get(0).reset();

                //弹出添加的模态窗口
                $("#addBookModal").modal("show");
            });
            //给保存按钮添加单击事件
            $("#saveBookBtn").click(function (){
                //收集参数
                var name = $.trim($("#addBookName").val());
                var price = $.trim($("#addBookPrice").val());

                //表单验证
                if(name==""){
                    alert("书名不能为空");
                    return;
                }

                var priceRequest = /^(([1-9]\d*)|0)$/;
                if(!priceRequest.test(price)){
                    alert("价格只能是非负整数");
                    return;
                }
                $.ajax({
                    url:'[[@{/manage/addBook}]]',
                    data:{
                        bookName:name,
                        price:price
                    },
                    type:'post',
                    dataType:'json',
                    success:function (data){
                        if(data.code=="1"){
                            //关闭模态窗口
                            $("#addBookModal").modal("hide");
                            //刷新列表,显示第一页数据,保持每页数显示条数不变
                            queryBookForPage(1, $("#page").bs_pagination('getOption', 'rowsPerPage'));
                        }else{
                            //模态窗口不关
                            $("#addBookModal").modal("show");
                        }
                    }
                });
            });

二. 删除

1. Controller

    @RequestMapping("/manage/deleteBook")
    @ResponseBody
    public R deleteBook(String[] id){
        try {
            boolean deleteResult = bookService.removeByIds(Arrays.asList(id));
            if(deleteResult){
                return R.success("删除成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return R.error("删除失败");
    }

2. 页面

①增加【删除】按钮

    <!-- 删除 -->
    <div>
        <button type="button" class="btn btn-danger" id="deleteBookBtn"><span class="glyphicon glyphicon-minus"></span> 删除</button>
    </div>

② 给【删除】按钮绑定点击事件

            //给全选按钮添加单击事件
            $("#checkAll").click(function (){
                //如果全选按钮是选中状态,则列表中所有checkbox都选中(即列表中每条数据的checkbox和全选按钮的值保持一致)
                $("#bookTableRow input[type='checkbox']").prop("checked", this.checked);
            });
            //如果列表中的所有checkbox都选中,则全选按钮也选中,否则如果至少一个每有选中,则全选按钮也不选中
            //由于列表中的数据是查询之后才加载出来的,晚于其他元素,所以用on的方式
            $("#bookTableRow").on("click", "input[type='checkbox']", function (){
                if($("#bookTableRow input[type='checkbox']").size() == $("#bookTableRow input[type='checkbox']:checked").size()){
                    $("#checkAll").prop("checked", true);
                }else{
                    $("#checkAll").prop("checked", false);
                }
            });

            //给删除按钮添加单击事件,删除选中的数据
            $("#deleteBookBtn").click(function (){
                //获取列表中所有被选中的checkbox
                var checkedIds = $("#bookTableRow input[type='checkbox']:checked");
                if(checkedIds.size() == 0){
                    alert("清选择要删除的书");
                    return;
                }

                if(window.confirm("确定删除吗?")){
                    var ids = "";
                    $.each(checkedIds, function (){
                        ids += "id="+this.value+"&";
                    });
                    ids = ids.substr(0, ids.length-1);
                    $.ajax({
                        url:'[[@{/manage/deleteBook}]]',
                        data:ids,
                        type: 'post',
                        dataType: 'json',
                        success:function (data){
                            if(data.code == "1"){
                                //刷新列表,显示第一页数据,保持每页数显示条数不变
                                queryBookForPage(1, $("#page").bs_pagination('getOption', 'rowsPerPage'));
                            }else{
                                alert(data.message);
                            }
                        }
                    });
                }
            });

三. 修改

1. Controller

    @PostMapping("/manage/queryBookById")
    @ResponseBody
    public R queryBookById(String id){
        Book book = bookService.getById(id);
        if(book != null){
            return R.success(book);
        }
        return R.error("未查询到该书");
    }

    @RequestMapping("/manage/updateBook")
    @ResponseBody
    public R updateBook(Book book){
        try {
            boolean updateResult = bookService.updateById(book);
            if(updateResult){
                return R.success("修改成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return R.error("更新失败");
    }

2. 页面

① 增加【修改】按钮

    <!-- 修改 -->
    <div>
        <button type="button" class="btn btn-default" data-toggle="modal" data-target="#updateBookModal" id="updateBookBtn"><span class="glyphicon glyphicon-pencil"></span> 修改</button>
    </div>

② 编写模态窗口:

    <!-- 修改的模态窗口 -->
    <div class="modal fade" role="dialog" id="updateBookModal" >
        <div class="modal-dialog" role="document" style="width: 85%;">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">
                        <span aria-hidden="true">×</span>
                    </button>
                    <h4 class="modal-title">修改书籍</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal" role="form">
                        <input type="hidden" id="bookId">  <!-- 使用隐藏域来存储获取到的id -->
                        <div class="form-group">
                            <label class="col-sm-2 control-label">书名<span style="font-size: 15px; color: red;">*</span></label>
                            <div class="col-sm-10" style="width: 300px;">
                                <input type="text" class="form-control" id="updateBookName">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">价格<span style="font-size: 15px; color: red;">*</span></label>
                            <div class="col-sm-10" style="width: 300px;">
                                <input type="text" class="form-control" id="updateBookPrice">
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" data-dismiss="modal" id="updateBtn">更新</button>
                </div>
            </div>
        </div>
    </div>

③ 给【修改】按钮绑定点击事件,当点击修改按钮时,弹出模态窗口,然后在模态窗口内输入信息;给模态窗口的【更新】按钮绑定单击事件,当点击更新按钮时,向后端发送请求

            //给修改按钮添加单击事件
            $("#updateBookBtn").click(function (){
                var checkId = $("#bookTableRow input[type='checkbox']:checked");
                if(checkId.size() == 0){
                    alert("请选择要修改的数据");
                    return;
                }
                if(checkId.size() > 1){
                    alert("每次只能修改一条数据");
                    return;
                }
                var id = checkId[0].value;
                $.ajax({
                    url:'[[@{/manage/queryBookById}]]',
                    data:{
                        id:id
                    },
                    type:'post',
                    dataType:'json',
                    success:function (data){
                        if(data.code=="1"){
                            //把信息显示到修改模态窗口的对应位置
                            $("#bookId").val(data.objectData.id);
                            $("#updateBookName").val(data.objectData.bookName);
                            $("#updateBookPrice").val(data.objectData.price);
                            //弹出修改的模态窗口
                            $("#updateBookModal").modal("show");
                        }else{
                            alert(data.message);
                        }
                    }
                });
            });
            //给更新按钮添加单击事件
            $("#updateBtn").click(function (){
                //收集参数
                var id =  $("#bookId").val();
                var name = $.trim($("#updateBookName").val());
                var price = $.trim($("#updateBookPrice").val());

                //表单验证
                if(name==""){
                    alert("书名不能为空");
                    return;
                }

                var priceRequest = /^(([1-9]\d*)|0)$/;
                if(!priceRequest.test(price)){
                    alert("价格只能是非负整数");
                    return;
                }
                $.ajax({
                    url:'[[@{/manage/updateBook}]]',
                    data:{
                        id:id,
                        bookName:name,
                        price:price
                    },
                    type:'post',
                    dataType:'json',
                    success:function (data){
                        if(data.code=="1"){
                            //关闭模态窗口
                            $("#updateBookModal").modal("hide");
                            //刷新列表,保持页号和每页数显示条数不变
                            queryBookForPage($("#page").bs_pagination('getOption', 'currentPage'), $("#page").bs_pagination('getOption', 'rowsPerPage'));
                        }else{
                            //模态窗口不关
                            alert(data.message);
                            $("#updateBookModal").modal("show");
                        }
                    }
                });
            });
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值