SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)的項(xiàng)目實(shí)踐
一、簡(jiǎn)介
MyBatis-Plus官網(wǎng):MyBatis-Plus ?? 為簡(jiǎn)化開發(fā)而生
MyBatis-Plus是一種基于MyBatis框架的強(qiáng)大持久層增強(qiáng)工具,它在MyBatis的基礎(chǔ)上提供了許多便捷的功能和增強(qiáng)的特性,用于簡(jiǎn)化開發(fā)。它是一個(gè)開源項(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)化開發(fā),提高開發(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: #開啟駝峰映射 map-underscore-to-camel-case: true #開啟日志,方便觀察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)造查詢條件,支持基本的等于、不等于、大于、小于等各種常見操作。它允許你以鏈?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í)集成Mybatis和Mybatis-plus框架
- SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)示例
- Springboot整合mybatis-plus使用pageHelper進(jìn)行分頁(yè)(使用步驟)
- springboot集成mybatis-plus全過(guò)程
- Springboot集成Mybatis-plus、ClickHouse實(shí)現(xiàn)增加數(shù)據(jù)、查詢數(shù)據(jù)功能
- springboot項(xiàng)目中mybatis-plus@Mapper注入失敗問(wèn)題
- springboot+mybatis-plus實(shí)現(xiàn)自動(dòng)建表的示例
- SpringBoot中使用MyBatis-Plus實(shí)現(xiàn)分頁(yè)接口的詳細(xì)教程
- SpringBoot?mybatis-plus使用json字段實(shí)戰(zhàn)指南
- springboot3.2整合mybatis-plus詳細(xì)代碼示例
- 全網(wǎng)最新springboot整合mybatis-plus的過(guò)程
相關(guān)文章
MyBatis-Plus 插件擴(kuò)展的實(shí)現(xiàn)
MyBatis-Plus通過(guò)插件擴(kuò)展機(jī)制增強(qiáng)功能,基于MyBatis Interceptor攔截器,包括分頁(yè)插件、邏輯刪除、SQL性能分析和樂(lè)觀鎖等,開發(fā)者可自定義插件以適應(yīng)特定需求,有效地增強(qiáng)SQL執(zhí)行過(guò)程的控制和優(yōu)化,同時(shí)注意插件使用的性能影響和執(zhí)行順序2024-09-09Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn)
這篇文章主要介紹了Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Java 數(shù)據(jù)結(jié)構(gòu)之時(shí)間復(fù)雜度與空間復(fù)雜度詳解
算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用: 時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長(zhǎng)短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小2021-11-11java中MultipartFile互轉(zhuǎn)File的方法
本文主要介紹了java中MultipartFile互轉(zhuǎn)File的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Java項(xiàng)目開啟遠(yuǎn)程調(diào)試的方法步驟(tomcat、springboot)
這篇文章主要介紹了Java項(xiàng)目開啟遠(yuǎn)程調(diào)試的方法步驟(tomcat、springboot),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Spring?Boot?整合RocketMq實(shí)現(xiàn)消息過(guò)濾功能
這篇文章主要介紹了Spring?Boot?整合RocketMq實(shí)現(xiàn)消息過(guò)濾,本文講解了RocketMQ實(shí)現(xiàn)消息過(guò)濾,針對(duì)不同的業(yè)務(wù)場(chǎng)景選擇合適的方案即可,需要的朋友可以參考下2022-06-06使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法
這篇將介紹使用Post方式提交數(shù)據(jù)到服務(wù)器,由于Post的方式和Get方式創(chuàng)建Web工程是一模一樣的,只用幾個(gè)地方的代碼不同,這篇文章主要介紹了使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法,感興趣的朋友一起學(xué)習(xí)吧2016-04-04IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解
在使用spring、mybatis等框架時(shí),配置文件很復(fù)雜,有時(shí)復(fù)雜的讓人想放棄Java,使用C#。springboot出現(xiàn)這一切問(wèn)題就都不是問(wèn)題2021-10-10