SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)的項(xiàng)目實(shí)踐
一、簡(jiǎn)介
MyBatis-Plus官網(wǎng):MyBatis-Plus ?? 為簡(jiǎn)化開(kāi)發(fā)而生
MyBatis-Plus是一種基于MyBatis框架的強(qiáng)大持久層增強(qiáng)工具,它在MyBatis的基礎(chǔ)上提供了許多便捷的功能和增強(qiáng)的特性,用于簡(jiǎn)化開(kāi)發(fā)。它是一個(gè)開(kāi)源項(xiàng)目,可以與MyBatis無(wú)縫集成。
MyBatis-Plus提供了以下主要功能和特性:
- 簡(jiǎn)化CRUD操作:提供了通用的Mapper接口和通用的Service接口,通過(guò)繼承這些接口可以省去大量的編碼工作。
- 代碼生成器:可以根據(jù)數(shù)據(jù)庫(kù)表結(jié)構(gòu)自動(dòng)生成實(shí)體類、Mapper接口和XML映射文件,減少手動(dòng)編寫重復(fù)代碼的工作量。
- 條件構(gòu)造器:提供了方便靈活的條件查詢封裝,可以通過(guò)鏈?zhǔn)秸{(diào)用的方式構(gòu)建查詢條件。
- 分頁(yè)插件:提供了簡(jiǎn)單易用的分頁(yè)查詢功能,支持多種數(shù)據(jù)庫(kù)。
- 樂(lè)觀鎖插件:為數(shù)據(jù)庫(kù)的樂(lè)觀鎖機(jī)制提供了便捷的支持。
- 自動(dòng)填充插件:為實(shí)體類的字段自動(dòng)填充值。
- SQL注入器:可以自定義SQL注入方法,增強(qiáng)SQL的靈活性。
總之,MyBatis-Plus是一個(gè)功能強(qiáng)大的持久層增強(qiáng)工具,可以大大簡(jiǎn)化開(kāi)發(fā),提高開(kāi)發(fā)效率。

二、SpringBoot集成MyBatis-Plus
1.導(dǎo)入依賴包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>2.編寫配置文件
spring:
#配置數(shù)據(jù)源
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/maven?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: 123456
mybatis-plus:
configuration:
#開(kāi)啟駝峰映射
map-underscore-to-camel-case: true
#開(kāi)啟日志,方便觀察SQL執(zhí)行語(yǔ)句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.使用注解標(biāo)識(shí)實(shí)體類
@TableName(value = "student")//對(duì)應(yīng)數(shù)據(jù)庫(kù)表名 @TableId(type = IdType.AUTO)//對(duì)應(yīng)數(shù)據(jù)庫(kù)主鍵,并設(shè)置類型為自增 @TableField(value = "id") //對(duì)應(yīng)數(shù)據(jù)庫(kù)字段名 @TableField(exist = false)//設(shè)置表中不存在的字段 @TableLogic(value = "默認(rèn)值",delval = "刪除后默認(rèn)值")//邏輯刪除時(shí)用的字段 @Version//作用:在使用 MyBatis-Plus 樂(lè)觀鎖插件時(shí)使用
4.MyBatis-Plus 中用于構(gòu)建查詢條件的方法:
1.eq 用于設(shè)置單個(gè)字段的相等條件。
2.allEq 通過(guò)一個(gè) Map 來(lái)設(shè)置多個(gè)字段的相等條件
3.ne 設(shè)置單個(gè)字段的不相等條件。
4.gt 設(shè)置單個(gè)字段的大于條件。
5.ge 設(shè)置單個(gè)字段的大于等于條件。
6.lt 設(shè)置單個(gè)字段的小于條件。
7.le 設(shè)置單個(gè)字段的小于等于條件。
8.between 設(shè)置單個(gè)字段的 BETWEEN 條件。
9.notBetween 設(shè)置單個(gè)字段的 NOT BETWEEN 條件。
10.like 設(shè)置單個(gè)字段的 LIKE 條件。
三、分頁(yè)實(shí)現(xiàn)
1.首先設(shè)置分頁(yè)攔截器作為Spring管理的Bean
package com.apesource.spring_mybatis_plus_01.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author 崔世博
* @version 1.0
* @since 2024/9/20
*/
@Configuration
public class PageConfig {
//注入mp攔截器
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
//1.實(shí)例化攔截器
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//2.添加分頁(yè)攔截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
2.Junit測(cè)試
(1)查找第一頁(yè)前三條數(shù)據(jù)
對(duì)應(yīng)SQL語(yǔ)句:
SELECT stu_id,stu_name,nick_name,stu_age,is_delete FROM student WHERE is_delete=0 LIMIT 3
@Test
public void show6() {
//分頁(yè)
Page<Student> page = new Page<Student>();
//1.定義分頁(yè)規(guī)則
page.setSize(3); //頁(yè)面容量
page.setCurrent(1); //當(dāng)前頁(yè)碼
Page<Student> studentPage = studentMapper.selectPage(page, null);
//分頁(yè)結(jié)果
List<Student> list = studentPage.getRecords();
System.out.println("總頁(yè)數(shù):" + studentPage.getPages());
System.out.println("總記錄數(shù):" + studentPage.getTotal());
list.forEach(System.out::println);
}(2)使用QueryWrapper

專門用于構(gòu)造查詢條件,支持基本的等于、不等于、大于、小于等各種常見(jiàn)操作。它允許你以鏈?zhǔn)秸{(diào)用的方式添加多個(gè)查詢條件,并且可以組合使用 and 和 or 邏輯。
例子:
找出student表中年齡等于20,分頁(yè)顯示第一頁(yè)的三條數(shù)據(jù)
對(duì)應(yīng)SQL語(yǔ)句:
SELECT stu_id,stu_name,nick_name,stu_age,is_delete FROM student WHERE is_delete=0 AND (stu_age = 20) LIMIT 3
@Test
public void show6() {
//分頁(yè)
Page<Student> page = new Page<Student>();
//1.定義分頁(yè)規(guī)則
page.setSize(3); //頁(yè)面容量
page.setCurrent(1); //當(dāng)前頁(yè)碼
//查詢條件(選填)
QueryWrapper<Student> qr = new QueryWrapper<Student>();
qr.eq("stu_age", 20);
Page<Student> studentPage = studentMapper.selectPage(page, qr);
//分頁(yè)結(jié)果
List<Student> list = studentPage.getRecords();
System.out.println("總頁(yè)數(shù):" + studentPage.getPages());
System.out.println("總記錄數(shù):" + studentPage.getTotal());
list.forEach(System.out::println);
}(3)LambdaQueryWrapper:
這是一個(gè)基于 Lambda 表達(dá)式的查詢條件構(gòu)造器,它通過(guò) Lambda 表達(dá)式來(lái)引用實(shí)體類的屬性,從而避免了硬編碼字段名。這種方式提高了代碼的可讀性和可維護(hù)性,尤其是在字段名可能發(fā)生變化的情況下。
例子:
找出student表中年齡等于20,分頁(yè)顯示第一頁(yè)的三條數(shù)據(jù)
對(duì)應(yīng)SQL語(yǔ)句:
SELECT stu_id,stu_name,nick_name,stu_age,is_delete FROM student WHERE is_delete=0 AND (stu_age > 18) LIMIT 3
@Test
public void show6() {
//分頁(yè)
Page<Student> page = new Page<Student>();
//1.定義分頁(yè)規(guī)則
page.setSize(3); //頁(yè)面容量
page.setCurrent(1); //當(dāng)前頁(yè)碼
LambdaQueryWrapper<Student> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.gt(Student::getStuAge, 18);
Page<Student> studentPage = studentMapper.selectPage(page, lambdaQueryWrapper);
//分頁(yè)結(jié)果
List<Student> list = studentPage.getRecords();
System.out.println("總頁(yè)數(shù):" + studentPage.getPages());
System.out.println("總記錄數(shù):" + studentPage.getTotal());
list.forEach(System.out::println);
}到此這篇關(guān)于SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)SpringBoot MyBatis-Plus分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot封裝實(shí)現(xiàn)分頁(yè)查詢工具
- SpringBoot+Mybatis-plus實(shí)現(xiàn)分頁(yè)查詢的示例代碼
- SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)示例
- Springboot整合mybatis-plus使用pageHelper進(jìn)行分頁(yè)(使用步驟)
- SpringBoot中分頁(yè)插件PageHelper的使用詳解
- SpringBoot3整合pageHelper實(shí)現(xiàn)分頁(yè)功能
- 從基礎(chǔ)到實(shí)戰(zhàn)詳解SpringBoot3實(shí)現(xiàn)分頁(yè)操作的完整指南
相關(guān)文章
springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄詳細(xì)流程
SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。單點(diǎn)登錄是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一,本文給大家介紹springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄功能,感興趣的朋友一起看看吧2021-10-10
使用Thrift實(shí)現(xiàn)跨語(yǔ)言RPC的調(diào)用
Thrift最大的優(yōu)勢(shì)就是可以實(shí)現(xiàn)跨語(yǔ)言RPC調(diào)用,尤其在一些大廠,微服務(wù)各模塊之間使用不同的語(yǔ)言是很常見(jiàn)的,本文就將使用java作為服務(wù)端,用python作為客戶端,實(shí)現(xiàn)不同語(yǔ)言之間的RPC調(diào)用,需要的可以參考下2023-10-10
Java中Properties類和properties文件示例詳解
在Java中Properties類是用于讀取和處理屬性文件的類,屬性文件是以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)的簡(jiǎn)單文本文件,這篇文章主要介紹了Java中Properties類和properties文件的相關(guān)資料,需要的朋友可以參考下2025-08-08
關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題
這篇文章主要介紹了java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
SpringBoot從2.7.x 升級(jí)到3.3注意事項(xiàng)
從SpringBoot 2.7.x升級(jí)到3.3涉及多個(gè)重要變更,特別是因?yàn)?nbsp;Spring Boot 3.x 系列基于 Jakarta EE 9,而不再使用 Java EE,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09
MyBatisPlus自定義JsonTypeHandler實(shí)現(xiàn)自動(dòng)轉(zhuǎn)化JSON問(wèn)題
這篇文章主要介紹了MyBatisPlus自定義JsonTypeHandler實(shí)現(xiàn)自動(dòng)轉(zhuǎn)化JSON問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Java應(yīng)用在Linux環(huán)境下因權(quán)限不足導(dǎo)致異常的解決方法
在Java應(yīng)用開(kāi)發(fā)與部署過(guò)程中,權(quán)限不足導(dǎo)致的異常是開(kāi)發(fā)者經(jīng)常遇到的“攔路虎”,在Linux系統(tǒng)環(huán)境下,Java應(yīng)用需要對(duì)相關(guān)文件和目錄具備合適的讀寫執(zhí)行權(quán)限,才能正常運(yùn)行,所以本文給大家介紹了Java應(yīng)用在Linux環(huán)境下因權(quán)限不足導(dǎo)致異常的解決方法,需要的朋友可以參考下2025-06-06
java項(xiàng)目idea構(gòu)建總是報(bào)內(nèi)存溢出怎么解決詳析
這篇文章主要介紹了java項(xiàng)目idea構(gòu)建總是報(bào)內(nèi)存溢出怎么解決的相關(guān)資料,方法包括增加IDEA內(nèi)存分配、調(diào)整項(xiàng)目編譯設(shè)置、配置Gradle構(gòu)建內(nèi)存、優(yōu)化項(xiàng)目結(jié)構(gòu)、清理不必要的依賴、使用命令行構(gòu)建、更新IDEA和JDK、清理IDEA緩存和禁用不必要的插件,需要的朋友可以參考下2025-03-03
SpringBoot單機(jī)限流的實(shí)現(xiàn)
在系統(tǒng)運(yùn)維中, 有時(shí)候?yàn)榱吮苊庥脩舻膼阂馑⒔涌? 會(huì)加入一定規(guī)則的限流,本文主要介紹了SpringBoot單機(jī)限流的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

