溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis-Plus分頁查詢的方法有哪些

發布時間:2022-03-07 09:58:57 來源:億速云 閱讀:492 作者:iii 欄目:開發技術

MyBatis-Plus分頁查詢的方法有哪些

MyBatis-Plus 是 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,簡化開發、提高效率。其中,分頁查詢是日常開發中非常常見的需求。MyBatis-Plus 提供了多種分頁查詢的方法,本文將詳細介紹這些方法及其使用場景。

1. 使用 Page 對象進行分頁查詢

Page 是 MyBatis-Plus 提供的一個分頁對象,通過它可以方便地進行分頁查詢。

1.1 基本用法

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public void testPage() {
    // 創建分頁對象,當前頁為1,每頁顯示10條
    Page<User> page = new Page<>(1, 10);
    
    // 創建查詢條件
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(User::getAge, 20);
    
    // 執行分頁查詢
    IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
    
    // 獲取分頁數據
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("總記錄數:" + total);
    System.out.println("總頁數:" + pages);
    System.out.println("當前頁數據:" + userList);
}

1.2 說明

  • Page<User> 是分頁對象,構造函數中的兩個參數分別是當前頁碼和每頁顯示的記錄數。
  • QueryWrapper<User> 是查詢條件構造器,用于構建查詢條件。
  • selectPage 方法用于執行分頁查詢,返回一個 IPage 對象,其中包含了分頁數據、總記錄數、總頁數等信息。

2. 使用 PaginationInterceptor 進行分頁

PaginationInterceptor 是 MyBatis-Plus 提供的一個分頁插件,通過配置該插件可以實現自動分頁。

2.1 配置 PaginationInterceptor

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2.2 使用分頁插件

配置好 PaginationInterceptor 后,在查詢時只需要傳入 Page 對象即可,MyBatis-Plus 會自動進行分頁。

public void testPaginationInterceptor() {
    // 創建分頁對象,當前頁為1,每頁顯示10條
    Page<User> page = new Page<>(1, 10);
    
    // 執行分頁查詢
    IPage<User> userPage = userMapper.selectPage(page, null);
    
    // 獲取分頁數據
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("總記錄數:" + total);
    System.out.println("總頁數:" + pages);
    System.out.println("當前頁數據:" + userList);
}

2.3 說明

  • PaginationInterceptor 是 MyBatis-Plus 提供的分頁插件,配置后會自動攔截 SQL 語句并添加分頁邏輯。
  • 使用分頁插件后,查詢時只需要傳入 Page 對象即可,無需手動編寫分頁 SQL。

3. 使用 PageHelper 進行分頁

PageHelper 是一個常用的分頁插件,MyBatis-Plus 也支持與 PageHelper 集成使用。

3.1 配置 PageHelper

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class PageHelperConfig {

    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

3.2 使用 PageHelper 進行分頁

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

public void testPageHelper() {
    // 開始分頁,當前頁為1,每頁顯示10條
    PageHelper.startPage(1, 10);
    
    // 執行查詢
    List<User> userList = userMapper.selectList(null);
    
    // 獲取分頁信息
    PageInfo<User> pageInfo = new PageInfo<>(userList);
    
    System.out.println("總記錄數:" + pageInfo.getTotal());
    System.out.println("總頁數:" + pageInfo.getPages());
    System.out.println("當前頁數據:" + pageInfo.getList());
}

3.3 說明

  • PageHelper 是一個獨立的分頁插件,MyBatis-Plus 也支持與其集成使用。
  • PageHelper.startPage 方法用于開始分頁,傳入當前頁碼和每頁顯示的記錄數。
  • PageInfoPageHelper 提供的分頁信息對象,包含了分頁數據、總記錄數、總頁數等信息。

4. 使用 LambdaQueryWrapper 進行分頁查詢

LambdaQueryWrapper 是 MyBatis-Plus 提供的一個基于 Lambda 表達式的查詢條件構造器,可以簡化查詢條件的編寫。

4.1 基本用法

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

public void testLambdaQueryWrapper() {
    // 創建分頁對象,當前頁為1,每頁顯示10條
    Page<User> page = new Page<>(1, 10);
    
    // 創建查詢條件
    LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    lambdaQueryWrapper.eq(User::getAge, 20);
    
    // 執行分頁查詢
    IPage<User> userPage = userMapper.selectPage(page, lambdaQueryWrapper);
    
    // 獲取分頁數據
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("總記錄數:" + total);
    System.out.println("總頁數:" + pages);
    System.out.println("當前頁數據:" + userList);
}

4.2 說明

  • LambdaQueryWrapper 是 MyBatis-Plus 提供的一個基于 Lambda 表達式的查詢條件構造器,可以簡化查詢條件的編寫。
  • 使用 LambdaQueryWrapper 可以避免硬編碼字段名,提高代碼的可讀性和可維護性。

5. 使用 PageWrapper 進行自定義分頁查詢

在某些場景下,可能需要自定義分頁查詢邏輯,此時可以結合 PageWrapper 進行自定義分頁查詢。

5.1 基本用法

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public void testCustomPage() {
    // 創建分頁對象,當前頁為1,每頁顯示10條
    Page<User> page = new Page<>(1, 10);
    
    // 創建查詢條件
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda().eq(User::getAge, 20);
    
    // 執行自定義分頁查詢
    IPage<User> userPage = userMapper.selectCustomPage(page, queryWrapper);
    
    // 獲取分頁數據
    List<User> userList = userPage.getRecords();
    long total = userPage.getTotal();
    long pages = userPage.getPages();
    
    System.out.println("總記錄數:" + total);
    System.out.println("總頁數:" + pages);
    System.out.println("當前頁數據:" + userList);
}

5.2 說明

  • selectCustomPage 是一個自定義的分頁查詢方法,需要在 UserMapper 中定義。
  • 自定義分頁查詢方法可以根據業務需求編寫復雜的 SQL 語句,靈活性更高。

6. 總結

MyBatis-Plus 提供了多種分頁查詢的方法,開發者可以根據實際需求選擇合適的方式。無論是使用 Page 對象、PaginationInterceptor 插件,還是與 PageHelper 集成,MyBatis-Plus 都能滿足大多數分頁查詢的需求。對于復雜的業務場景,還可以結合 Wrapper 進行自定義分頁查詢,靈活性非常高。

通過本文的介紹,相信大家對 MyBatis-Plus 的分頁查詢方法有了更深入的了解,能夠在實際開發中靈活運用這些方法,提高開發效率。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女