欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot使用PageHelper插件實現Mybatis分頁效果

 更新時間:2024年02月22日 09:28:33   作者:霸道流氓氣質  
這篇文章主要介紹了SpringBoot使用PageHelper插件實現Mybatis分頁效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作有一定的參考借鑒價值,需要的朋友可以參考下

場景

SpringBoot中整合Mybatis時一般添加的依賴為

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>

如果要實現分頁查詢的話,可以使用Mybatis的分頁插件PageHelper

GitHub - pagehelper/Mybatis-PageHelper: Mybatis通用分頁插件

官方使用教程:

https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

這里是SpringBoot項目,可直接使用pagehelper-spring-boot-starter

GitHub - pagehelper/pagehelper-spring-boot: pagehelper-spring-boot

PageHelper-Spring-Boot-Starter 幫助你集成分頁插件到 Spring Boot

實現

1、項目中添加依賴

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

添加這一個依賴就夠了,不用再引入mybatis的依賴,因為會自動引入多個依賴

完整pom依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <!--MySQL驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

這里spring-boot-starter-web引入2.6.13,且存在循環(huán)引入,為避免循環(huán)依賴引用報錯,添加如下配置

spring:
  main:
    allow-circular-references: true

2、按照官方文檔說明配置PageHelper

yml中添加如下配置

pagehelper:
  helperDialect: mysql # 指定數據庫,不指定的話會默認自動檢測數據庫類型
  # 是否啟用分頁合理化。
  # 如果啟用,當pagenum<1時,會自動查詢第一頁的數據,當pagenum>pages時,自動查詢最后一頁數據;
  # 不啟用的,以上兩種情況都會返回空數據
  reasonable: true
  # 是否開啟自動分頁? 分頁插件會從查詢方法的參數值中,自動 params 配置的字段中取值,查找到合適的值時就會自動分頁。
  supportMethodsArguments: true # 默認值false,
  #  用于從對象中根據屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,
  #  不配置映射的用默認值, 默認值為pageNum=pageNum;pageSize=pageSize;count=countSql;
  params: count=countSql

3、yml中同樣添加mybatis的配置

mybatis:
  mapper-locations: classpath:mapper/*.xml    # mapper映射文件位置
  type-aliases-package: com.badao.demo.entity    # 實體類所在的位置
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   #用于控制臺打印sql語句

4、如何在代碼中使用分頁

官方文檔給出了多種用法

//第一種,RowBounds方式的調用
List<User> list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10));
 
//第二種,Mapper接口方式的調用,推薦這種使用方式。
PageHelper.startPage(1, 10);
List<User> list = userMapper.selectIf(1);
 
//第三種,Mapper接口方式的調用,推薦這種使用方式。
PageHelper.offsetPage(1, 10);
List<User> list = userMapper.selectIf(1);
 
//第四種,參數方法調用
//存在以下 Mapper 接口方法,你不需要在 xml 處理后兩個參數
public interface CountryMapper {
    List<User> selectByPageNumSize(
            @Param("user") User user,
            @Param("pageNum") int pageNum,
            @Param("pageSize") int pageSize);
}
//配置supportMethodsArguments=true
//在代碼中直接調用:
List<User> list = userMapper.selectByPageNumSize(user, 1, 10);
 
//第五種,參數對象
//如果 pageNum 和 pageSize 存在于 User 對象中,只要參數有值,也會被分頁
//有如下 User 對象
public class User {
    //其他fields
    //下面兩個參數名和 params 配置的名字一致
    private Integer pageNum;
    private Integer pageSize;
}
//存在以下 Mapper 接口方法,你不需要在 xml 處理后兩個參數
public interface CountryMapper {
    List<User> selectByPageNumSize(User user);
}
//當 user 中的 pageNum!= null && pageSize!= null 時,會自動分頁
List<User> list = userMapper.selectByPageNumSize(user);
 
//第六種,ISelect 接口方式
//jdk6,7用法,創(chuàng)建接口
Page<User> page = PageHelper.startPage(1, 10).doSelectPage(new ISelect() {
    @Override
    public void doSelect() {
        userMapper.selectGroupBy();
    }
});
//jdk8 lambda用法
Page<User> page = PageHelper.startPage(1, 10).doSelectPage(()-> userMapper.selectGroupBy());
 
//也可以直接返回PageInfo,注意doSelectPageInfo方法和doSelectPage
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(new ISelect() {
    @Override
    public void doSelect() {
        userMapper.selectGroupBy();
    }
});
//對應的lambda用法
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> userMapper.selectGroupBy());
 
//count查詢,返回一個查詢語句的count數
long total = PageHelper.count(new ISelect() {
    @Override
    public void doSelect() {
        userMapper.selectLike(user);
    }
});
//lambda
        total=PageHelper.count(()->userMapper.selectLike(user));

下面介紹簡單的PageHelper.startPage 靜態(tài)方法調用

你需要進行分頁的 MyBatis 查詢方法前調用 PageHelper.startPage 靜態(tài)方法即可,

緊跟在這個方法后的第一個MyBatis 查詢方法會被進行分頁。

    @Override
    public List<User> selectUserPage() {
        PageHelper.startPage(1, 10);
        return userMapper.findAll();
    }

編寫單元測試

import com.badao.demo.entity.User;
import com.badao.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
 
@SpringBootTest
@RunWith(SpringRunner.class)
public class PageTest {
 
    @Autowired
    private UserService userService;
 
    @Test
    public void testPage() {
        List<User> users = userService.selectUserPage();
        System.out.println(users.size());
    }
 
}

單元測試運行結果

以上就是SpringBoot使用PageHelper插件實現Mybatis分頁效果的詳細內容,更多關于SpringBoot Mybatis分頁的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot多環(huán)境配置及日志記錄器詳解

    SpringBoot多環(huán)境配置及日志記錄器詳解

    這篇文章主要介紹了SpringBoot多環(huán)境配置及日志記錄器詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • java selenium 常見web UI 元素操作及API使用

    java selenium 常見web UI 元素操作及API使用

    本文主要介紹java selenium 常見web UI 元素操作,這里幫大家整理了相關資料并附示例代碼,有需要的小伙伴可以參考下
    2016-08-08
  • java通過PDF模板填寫PDF表單

    java通過PDF模板填寫PDF表單

    這篇文章主要為大家詳細介紹了java通過PDF模板填寫PDF表單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • java使用jacob.jar將word轉pdf

    java使用jacob.jar將word轉pdf

    這篇文章主要為大家詳細介紹了java利用jacob.jar將word轉pdf,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SpringBoot整合GitLab-CI實現持續(xù)集成的過程

    SpringBoot整合GitLab-CI實現持續(xù)集成的過程

    這篇文章主要介紹了SpringBoot整合GitLab-CI實現持續(xù)集成,本文詳細講述了 GitLab-CI 持續(xù)集成的安裝、部署、以及配置,需要的朋友可以參考下
    2022-12-12
  • LoggingEventAsyncDisruptorAppender類執(zhí)行流程源碼解讀

    LoggingEventAsyncDisruptorAppender類執(zhí)行流程源碼解讀

    這篇文章主要介紹了LoggingEventAsyncDisruptorAppender類執(zhí)行流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Java8中Stream流求最大值最小值的實現示例

    Java8中Stream流求最大值最小值的實現示例

    本文主要介紹了Java8中Stream流求最大值最小值的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Mybatis-Plus和Mybatis的區(qū)別詳解

    Mybatis-Plus和Mybatis的區(qū)別詳解

    這篇文章主要介紹了Mybatis-Plus和Mybatis的區(qū)別,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java 中This用法的實例詳解

    Java 中This用法的實例詳解

    這篇文章主要介紹了 Java 中This用法的實例詳解的相關資料,希望通過本文大家能理解掌握this關鍵字的使用方法,需要的朋友可以參考下
    2017-09-09
  • springboot2.3.1替換為其他的嵌入式servlet容器的詳細方法

    springboot2.3.1替換為其他的嵌入式servlet容器的詳細方法

    這篇文章主要介紹了springboot2.3.1替換為其他的嵌入式servlet容器的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論