Spring Boot入門系列(十六)使用pagehelper實現分頁功能

章為忠發表於2020-06-28

之前講了Springboot整合Mybatis,然後介紹瞭如何自動生成pojo實體類、mapper類和對應的mapper.xml 檔案,並實現最基本的增刪改查功能。接下來要說一說Mybatis 的分頁功能:使用Mybatis-PageHelper外掛,實現分頁功能。Spring Boot入門系列文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html

 

一、pagehelper介紹

pageHelper是一款非常簡單、易用的分頁外掛,它能很好的整合在spring boot中。它是一個基於mybatis的一款外掛,所以我們在使用它時,我們需要使用mybatis作為持久層框架。

github地址是https://github.com/pagehelper/Mybatis-PageHelper

 

二、快速開始

如果我們需要使用pageHelper的話,我們需要在spring boot專案中引入pageHelper的依賴。之前介紹過Spring Boot整合mybatis,這裡就不介紹了。《Spring Boot入門系列(六)Spring Boot如何使用Mybatis XML 配置版【附詳細步驟】》 。

1、pom 配置

增加pageHelper的依賴

        <!-- pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>

注意:spring boot 引入的jar包必須是要pagehelper-spring-boot-starter ,如果單獨引入pagehelper的話,會提示錯誤。

 

2、application.properties增加pagehelper 配置

# 分頁框架
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

說明: 

  helperDialect : 指定資料庫,可以不配置,pagehelper外掛會自動檢測資料庫的型別。

  resonable : 分頁合理化引數預設false,當該引數設定為true 時,pageNum <= 0 時,預設顯示第一頁,pageNum 超過 pageSize 時,顯示最後一頁。

  params : 用於從物件中根據屬性名取值,可以配置pageNum,pageSize,count 不用配置對映的預設值。

  supportMethodsArguments : 分頁外掛會根據查詢方法的引數中,自動根據params 配置的欄位中取值,找到合適的值會自動分頁。 

 

到這裡配置就完成了,在Springboot中整合就是這麼簡潔,約定大約配置的方式,大量的減少了配置檔案的使用 。

 

3、實現分頁

在原來的UserService類和UserServiceImpl 類中,增加 queryUserListPaged 介面和對應的方法實現。

    @Override
    public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
        // 開始分頁
        PageHelper.startPage(page,pageSize);
        Example example = new Example(SysUser.class);
        Example.Criteria criteria = example.createCriteria();

        if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
            criteria.andLike("username", "%" + user.getUsername() + "%");
        }

        if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
            criteria.andLike("nickname", "%" + user.getNickname() + "%");
        }

        List<SysUser> userList = userMapper.selectByExample(example);

        return userList;
    }

分頁的核心就一行程式碼, PageHelper.startPage(page,pageSize); 這個就標識開始分頁。加了這個之後pagehelper 外掛就會通過其內部的攔截器,將執行的sql語句,轉化為分頁的sql語句。

注意:使用時PageHelper.startPage(pageNum, pageSize)一定要放在列表查詢的方法中,這樣在查詢時會查出相應的資料量且會查詢出總數。

 

4、在原來的MybatisController 控制器中增加如下方法:

@RequestMapping("/queryUserListPaged")
    public JSONResult queryUserListPaged(Integer page) {
        if (page == null) {
            page = 1;
        }

        int pageSize = 10;

        SysUser user = new SysUser();

        List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize);

        return JSONResult.ok(userList);
    }

說明:

  呼叫的方法,只需將page頁碼,和pageSize 每頁多少條這兩個欄位傳入即可。 

 

最後

以上,就把Spring Boot整合pagehelper外掛,實現分頁功能介紹完了。還是比較簡單的。

這個系列課程的完整原始碼,也會提供給大家。大家關注我的微信公眾號(架構師精進),回覆:springboot原始碼。獲取這個系列課程的完整原始碼。

 

相關文章