美文网首页
SpringBoot +Mybatis 的Mysql分页实现

SpringBoot +Mybatis 的Mysql分页实现

作者: sT丶 | 来源:发表于2017-08-30 17:17 被阅读0次

    前言

    每次写一个项目的时候,如果涉及到分页,总会感觉写起来不舒服,通常需要在xml 里面写分页语句,还要写一个查询总数的语句,这样总感觉不是特别优雅。现在在网上找了个Mybatis分页插件,用着特别舒服,给大家介绍下。

    PageHelper

    作者是中国的一个的程序员,项目地址
    https://git.oschina.net/free/Mybatis_PageHelper

    使用方法

    官网已经有详细的使用方法,这里简单介绍下如何整合SpringBoot+Mybatis.
    其实很简单,他已经有了springboot 的start包,完全零配置。
    1.引入依赖

      <!--分页-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.1.3</version>
            </dependency>
    

    2.使用
    在你需要分页调用mapper方法时

    PageHelper.offsetPage(1, 10);
    List<Country> list = countryMapper.selectIf(1);
    

    获取总数total的方法

    //count查询,返回一个查询语句的count数
    long total = PageHelper.count(new ISelect() {
        @Override
        public void doSelect() {
            countryMapper.selectLike(country);
        }
    });
    

    个人感觉最简单优雅的方式是直接使用java8的lamda表达式直接获取一个完整的page对象,其中包括了 页数,条数等等详细信息代码如下

    pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> countryMapper.selectGroupBy());
    

    返回值pageInfo大概是这样的

    {
            "endRow": 3,
            "firstPage": 1,
            "hasNextPage": true,
            "hasPreviousPage": false,
            "isFirstPage": false,
            "isLastPage": false,
            "lastPage": 2,
            "list": [
                //查询到的结果集
            ],
            "navigateFirstPage": 1,
            "navigateLastPage": 2,
            "navigatePages": 8,
            "navigatepageNums": [
                1,
                2
            ],
            "nextPage": 1,
            "pageNum": 0,
            "pageSize": 3,
            "pages": 2,
            "prePage": 0,
            "size": 3,
            "startRow": 1,
            "total": 6
        }
    

    可以看到是真的很简单和优雅。

    相关文章

      网友评论

          本文标题:SpringBoot +Mybatis 的Mysql分页实现

          本文链接:https://www.haomeiwen.com/subject/ihlxjxtx.html