MyBatis分页插件+ajax实现分页功能

1.准备

1.pom导入MyBatis插件

    <!--        mybatis分页插件-->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.1.10</version>
    </dependency>

2.MyBatis.xml配置文件添加分页插件

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 使用下面的方式配置参数-->
        <property name="reasonable" value="true"/>
    </plugin>
</plugins>

3.Controller层调用

    /**
     * 获取分页查询到的数据
     * @param pageIndex 当前页码
     * @return 分页数据与Tbhealth的list数据
     */
    @PostMapping ( "/healthPage")
    @ResponseBody
    public PageInfo getHealth(int pageIndex){
        PageHelper.startPage(pageIndex,5);
        List<TbHealth> tbHealths = healthMapperService.queryHealthList();
        return new PageInfo(tbHealths,7);
    }

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
更多参数请移步PageInfo源码!
4.页面的内容,这里开发需要用的是jsp页面,html同理

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" +request.getServerPort() +
            request.getContextPath() + "/";
%>
<html>
<head>
    <title>体检</title>
    <base href="<%=basePath%>">

    <link rel="stylesheet" href="static/layui/css/layui.css">
    <link rel="stylesheet" href="static/css/bootstrap.min.css">
    <script src="static/js/jquery.min.js"></script>
    <script src="static/js/bootstrap.min.js"></script>
    <script src="static/layui/layui.js"></script>
    <style>
        a:hover{
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="panel-heading">
    <h1 class="panel-title">
        体检员工
    </h1>
</div>
<div class="panel-body">
    <table class="table table-hover">
        <tr>
            <td>编号</td>
            <td>身高</td>
            <td>血压</td>
            <td>心率</td>
            <td>体重</td>
            <td>视力</td>
            <td>血脂</td>
            <td>血型</td>
            <td>X透视</td>
            <td>肝功能</td>
            <td>时间</td>
            <td>操作1</td>
            <td>操作2</td>
<%--            <td>操作3</td>--%>
        </tr>
        <tbody id="information">

        </tbody>
    </table>
    <form class="bs-example bs-example-form input-group input-group-lg" role="form" name="getPage">
        <div class="row">
            <br>
            <div class="col-lg-6 " >
                <div class="input-group">
                    <input type="text" value="1" class="form-control" name="page">
                    <span class="input-group-btn">
                        <button class="btn btn-info" type="button" onclick="gotoPage()">前往</button>
                    </span>
                </div><!-- /input-group -->
            </div><!-- /.col-lg-6 -->
        </div><!-- /.row -->
    </form>
    <br/>
    <button id="firstPagebtnId" class="btn btn-info btn-sm">首页</button>
    <button id="prepagebtnId" class="btn btn-info btn-sm">上一页</button>
    <button id="nextpagebtnId" class="btn btn-info btn-sm">下一页</button>
    <button id="lastpagebtnId" class="btn btn-info btn-sm">尾页</button>
    <span id="pageNum"></span><span id="pages"></span>
    <span></span>

    <br/>

</div>
</body>
</html>

<script>
    //当前页数
    var pageNum;
    //前一页
    var prePage;
    //下一页
    var nextPage;
    //是否存在上一页
    var hasPreviousPage;
    //是否存在下一页
    var hasNextPage;
    //总页码数
    var pages;
    //页码加载执行,查看第一页数据
    $(function (){
        LoadCustomerData(1);
    });
    //ajax请求
    function LoadCustomerData(pageIndex) {
        var param={"pageIndex":pageIndex}
        $.ajax({
            url:"/health/healthPage",
            type:"post",
            data:param,
            dataType:"json",
            success:function(data){
                //情空旧数据
                $("#information").html("");
                //添加新的数据
                $.each(data.list,function(i,n){
                    var x_ray;
                    var liver;
                    if (n.x_ray===1){
                        x_ray="正常";
                    }else{
                        x_ray="异常";
                    };
                    if (n.liver===1){
                        liver="正常";
                    }else{
                        liver="异常";
                    }
                    $("#information").append("<tr>")
                        .append("<td>"+n.user_id+"</td>")
                        .append("<td>"+n.height+"</td>")
                        .append("<td>"+n.blood_pressure+"</td>")
                        .append("<td>"+n.heart_rate+"</td>")
                        .append("<td>"+n.weight+"</td>")
                        .append("<td>"+n.vision+"</td>")
                        .append("<td>"+n.blood_fat+"</td>")
                        .append("<td>"+n.blood+"</td>")
                        .append("<td>"+x_ray+"</td>")
                        .append("<td>"+liver+"</td>")
                        .append("<td>"+n.check_date+"</td>")
                        .append("<td><a href='health/checkhealth/" + n.id + " ''>进行体检</a></td>")
                        .append("<td><a onclick='javascript:return Del("+n.id+","+data.pageNum+")' class='text-info'>删除</a></td>")
                        .append("</tr>")
                });
                $("#pageNum").text("当前在第["+data.pageNum+"]页,")
                $("#pages").text("总共有"+data.pages+"页")
                 hasPreviousPage=data.hasPreviousPage;
                 hasNextPage=data.hasNextPage;
                 pages=data.pages;
                 pageNum=data.pageNum;
                 prePage=data.prePage;
                 nextPage=data.nextPage;
            },
            error: function (){
                alert("操作错误!")
            }
        })
    }

        //首页按钮事件
        $("#firstPagebtnId").click(function (){
            LoadCustomerData(1);
        })
        //尾页按钮事件
        $("#lastpagebtnId").click(function (){
            LoadCustomerData(pages);
        })
        //下一页按钮事件
        $("#nextpagebtnId").click(function (){
            //判断是否存在下一页
            if (hasNextPage===true){
                LoadCustomerData(nextPage);
            }else (
                layer.msg('已经是最后一页了')
            )
        });

        //上一页按钮事件
        $("#prepagebtnId").click(function (){
            //判断是否存在上一页
            if (hasPreviousPage===true){
                LoadCustomerData(prePage);
            }
            else(layer.msg('已经到第一页啦'))
        });
        //页码导航
    function gotoPage(){
        //获取用户输入的页码
        var num=getPage.page.value;
        //判断页码是否在可用范围
        if (num<=0||num>pages){
            layer.msg('页码不存在')
        }else {LoadCustomerData(num);
        }
    };
    //ajax 删除请求
    function Del(id,pageNum){
        var msg = "确认删除?";
        // alert(id+"--"+pageNum)
        if (confirm(msg)===true){

            id=parseInt(id)
            // alert(id)
            $.ajax({
                url: "/health/deleteHealth/"+id+"/"+pageNum,
                type: "post",
                success: function (data) {
                    $("#information").html("");
                    //添加新的数据
                    $.each(data.list, function (i, n) {
                        var x_ray;
                        var liver;
                        if (n.x_ray===1){
                            x_ray="正常";
                        }else{
                            x_ray="异常";
                        };
                        if (n.liver===1){
                            liver="正常";
                        }else{
                            liver="异常";
                        }
                        $("#information").append("<tr>")
                            .append("<td>"+n.user_id+"</td>")
                            .append("<td>"+n.height+"</td>")
                            .append("<td>"+n.blood_pressure+"</td>")
                            .append("<td>"+n.heart_rate+"</td>")
                            .append("<td>"+n.weight+"</td>")
                            .append("<td>"+n.vision+"</td>")
                            .append("<td>"+n.blood_fat+"</td>")
                            .append("<td>"+n.blood+"</td>")
                            .append("<td>"+x_ray+"</td>")
                            .append("<td>"+liver+"</td>")
                            .append("<td>"+n.check_date+"</td>")
                            .append("<td><a href='health/checkhealth/" + n.id + " ''>进行体检</a></td>")
                            .append("<td><a onclick='javascript:return Del("+n.id+","+n.pageNum+")' class='text-info'>删除</a></td>")
                            .append("</tr>")
                    })
                    layer.msg('删除成功');
                    // LoadCustomerData();
                }
            })
        }else{
            return false;
        }
    }

    // //确认删除
    // function del() {
    //     var msg = "确认删除?";
    //     if (confirm(msg)==true){
    //         return true;
    //     }else{
    //         return false;
    //     }
    // }
</script>

5.实现效果
在这里插入图片描述
我的数据库
在这里插入图片描述
tips:我的项目并没有使用Mybatis-plus,所有只有Mybatis也是可以使用分页插件的,非常方便!

猜你喜欢

转载自blog.csdn.net/CSDN13822805069/article/details/124179235