最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot使用PageHelper插件實(shí)現(xiàn)Mybatis分頁效果

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

場景

SpringBoot中整合Mybatis時(shí)一般添加的依賴為

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

如果要實(shí)現(xiàn)分頁查詢的話,可以使用Mybatis的分頁插件PageHelper

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

官方使用教程:

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

這里是SpringBoot項(xiàng)目,可直接使用pagehelper-spring-boot-starter

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

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

實(shí)現(xiàn)

1、項(xiàng)目中添加依賴

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

添加這一個(gè)依賴就夠了,不用再引入mybatis的依賴,因?yàn)闀?huì)自動(dòng)引入多個(gè)依賴

完整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驅(qū)動(dòng)-->
        <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)依賴引用報(bào)錯(cuò),添加如下配置

spring:
  main:
    allow-circular-references: true

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

yml中添加如下配置

pagehelper:
  helperDialect: mysql # 指定數(shù)據(jù)庫,不指定的話會(huì)默認(rèn)自動(dòng)檢測數(shù)據(jù)庫類型
  # 是否啟用分頁合理化。
  # 如果啟用,當(dāng)pagenum<1時(shí),會(huì)自動(dòng)查詢第一頁的數(shù)據(jù),當(dāng)pagenum>pages時(shí),自動(dòng)查詢最后一頁數(shù)據(jù);
  # 不啟用的,以上兩種情況都會(huì)返回空數(shù)據(jù)
  reasonable: true
  # 是否開啟自動(dòng)分頁? 分頁插件會(huì)從查詢方法的參數(shù)值中,自動(dòng) params 配置的字段中取值,查找到合適的值時(shí)就會(huì)自動(dòng)分頁。
  supportMethodsArguments: true # 默認(rèn)值false,
  #  用于從對(duì)象中根據(jù)屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,
  #  不配置映射的用默認(rèn)值, 默認(rèn)值為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    # 實(shí)體類所在的位置
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   #用于控制臺(tái)打印sql語句

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

官方文檔給出了多種用法

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

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

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

緊跟在這個(gè)方法后的第一個(gè)MyBatis 查詢方法會(huì)被進(jìn)行分頁。

    @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());
    }
 
}

單元測試運(yùn)行結(jié)果

以上就是SpringBoot使用PageHelper插件實(shí)現(xiàn)Mybatis分頁效果的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Mybatis分頁的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot實(shí)現(xiàn)動(dòng)態(tài)更新任務(wù)的方法

    Spring Boot實(shí)現(xiàn)動(dòng)態(tài)更新任務(wù)的方法

    這篇文章主要介紹了Spring Boot實(shí)現(xiàn)動(dòng)態(tài)更新任務(wù)的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家學(xué)習(xí)使用Spring Boot動(dòng)態(tài)更新任務(wù)具有一定的參考價(jià)值,需要的朋友們來一起看看吧。
    2017-04-04
  • Java異常處理的五個(gè)關(guān)鍵字

    Java異常處理的五個(gè)關(guān)鍵字

    本篇文章給大家詳細(xì)講述了關(guān)于Java異常處理的相關(guān)知識(shí)點(diǎn),并列舉了5個(gè)重要關(guān)鍵字,一起啊參考學(xué)下。
    2018-03-03
  • Spring AOP底層源碼詳解

    Spring AOP底層源碼詳解

    這篇文章主要介紹了Spring AOP底層源碼詳解,幫助大家更好的理解和學(xué)習(xí)使用Spring AOP,感興趣的朋友可以了解下
    2021-03-03
  • Java并發(fā)編程預(yù)防死鎖過程詳解

    Java并發(fā)編程預(yù)防死鎖過程詳解

    這篇文章主要介紹了Java并發(fā)編程預(yù)防死鎖過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java保證一個(gè)方法只能執(zhí)行一次的問題

    java保證一個(gè)方法只能執(zhí)行一次的問題

    這篇文章主要介紹了java保證一個(gè)方法只能執(zhí)行一次的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java實(shí)現(xiàn)爬蟲給App提供數(shù)據(jù)(Jsoup 網(wǎng)絡(luò)爬蟲)

    Java實(shí)現(xiàn)爬蟲給App提供數(shù)據(jù)(Jsoup 網(wǎng)絡(luò)爬蟲)

    這篇文章主要介紹了Java實(shí)現(xiàn)爬蟲給App提供數(shù)據(jù),即Jsoup 網(wǎng)絡(luò)爬蟲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • jdk中keytool的使用以及如何提取jks文件中的公鑰和私鑰

    jdk中keytool的使用以及如何提取jks文件中的公鑰和私鑰

    JKS文件由公鑰和密鑰構(gòu)成利用Java?Keytool工具生成的文件,它是由公鑰和密鑰構(gòu)成的,下面這篇文章主要給大家介紹了關(guān)于jdk中keytool的使用以及如何提取jks文件中公鑰和私鑰的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • SpringBoot集成XXL-JOB實(shí)現(xiàn)靈活控制的分片處理方案

    SpringBoot集成XXL-JOB實(shí)現(xiàn)靈活控制的分片處理方案

    因?yàn)樾枰⑿刑幚硗粡垟?shù)據(jù)表里的數(shù)據(jù),所以比較自然地想到了分片查詢數(shù)據(jù),可以利用對(duì) id 取模的方法進(jìn)行分片,避免同一條數(shù)據(jù)被重復(fù)處理,所以本文給大家介紹了SpringBoot集成XXL-JOB實(shí)現(xiàn)靈活控制的分片處理方案,需要的朋友可以參考下
    2024-09-09
  • redis發(fā)布訂閱Java代碼實(shí)現(xiàn)過程解析

    redis發(fā)布訂閱Java代碼實(shí)現(xiàn)過程解析

    這篇文章主要介紹了redis發(fā)布訂閱Java代碼實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java實(shí)現(xiàn)圖書借閱系統(tǒng)

    Java實(shí)現(xiàn)圖書借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論

丹阳市| 北京市| 中超| 诸暨市| 福建省| 山东| 吴堡县| 湟源县| 金平| 崇阳县| 门头沟区| 安庆市| 靖宇县| 公主岭市| 宿迁市| 瑞安市| 姚安县| 临朐县| 岳池县| 金乡县| 遵化市| 邳州市| 阜阳市| 建阳市| 徐汇区| 平果县| 山东| 镇原县| 阿克苏市| 龙泉市| 广灵县| 盐津县| 武鸣县| 绩溪县| 邢台县| 维西| 丹江口市| 陆川县| 左云县| 安阳县| 唐海县|