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

SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)示例

 更新時(shí)間:2024年12月05日 08:31:34   作者:猿究院-愛(ài)吃西紅柿  
本文介紹了SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁(yè)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、簡(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)造查詢條件,支持基本的等于、不等于、大于、小于等各種常見(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è)示例的文章就介紹到這了,更多相關(guān)SpringBoot MyBatis-Plus分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring入門到精通之注解開發(fā)詳解

    Spring入門到精通之注解開發(fā)詳解

    Spring是輕代碼而重配置的框架,配置比較繁重,影響開發(fā)效率,所以注解開發(fā)是一種趨勢(shì)。本文將通過(guò)示例為大家詳細(xì)講講Spring如何實(shí)現(xiàn)注解開發(fā),感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • SpringBoot中@Import注解如何正確使用

    SpringBoot中@Import注解如何正確使用

    這篇文章主要介紹了SpringBoot中@Import注解的使用方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • java如何用遞歸方法求階乘

    java如何用遞歸方法求階乘

    這篇文章主要介紹了java 用遞歸方法求階乘的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java導(dǎo)出Word文檔的四種方法

    Java導(dǎo)出Word文檔的四種方法

    在日常的開發(fā)工作中,我們時(shí)常會(huì)遇到導(dǎo)出Word文檔報(bào)表的需求,比如公司的財(cái)務(wù)報(bào)表、醫(yī)院的患者統(tǒng)計(jì)報(bào)表、電商平臺(tái)的銷售報(bào)表等等,所以本文給大家介紹了Java導(dǎo)出Word文檔的四種方法,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Java之如何正確地對(duì)包裝類進(jìn)行裝箱與拆箱

    Java之如何正確地對(duì)包裝類進(jìn)行裝箱與拆箱

    在這篇文章中給大家繼續(xù)講解包裝類的裝箱和拆箱問(wèn)題。你可能會(huì)很好奇,做java開發(fā),怎么還裝起箱子來(lái)了?那么就請(qǐng)大家?guī)е苫笸驴窗?/div> 2023-04-04
  • 在springboot中實(shí)現(xiàn)個(gè)別bean懶加載的操作

    在springboot中實(shí)現(xiàn)個(gè)別bean懶加載的操作

    這篇文章主要介紹了在springboot中實(shí)現(xiàn)個(gè)別bean懶加載的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • SpringBoot+docker環(huán)境變量配置詳解

    SpringBoot+docker環(huán)境變量配置詳解

    這篇文章主要介紹了SpringBoot+docker環(huán)境變量配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • java實(shí)現(xiàn)登錄窗口

    java實(shí)現(xiàn)登錄窗口

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)登錄窗口,含驗(yàn)證碼驗(yàn)證、賬戶注冊(cè)等,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 淺談springboot一個(gè)service內(nèi)組件的加載順序

    淺談springboot一個(gè)service內(nèi)組件的加載順序

    這篇文章主要介紹了springboot一個(gè)service內(nèi)組件的加載順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家
    2021-08-08
  • SpringBoot 使用Mongo的GridFs實(shí)現(xiàn)分布式文件存儲(chǔ)操作

    SpringBoot 使用Mongo的GridFs實(shí)現(xiàn)分布式文件存儲(chǔ)操作

    這篇文章主要介紹了Spring Boot 使用Mongo的GridFs實(shí)現(xiàn)分布式文件存儲(chǔ)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評(píng)論