MybatisPlus的分頁外掛簡單使用

槑孒發表於2024-08-08

MyBatis-Plus 提供了強大的分頁外掛,可以方便地實現資料庫查詢結果的分頁。

以下是關於 MyBatis-Plus 分頁外掛的詳細介紹,包括如何配置和使用。

1. 新增依賴

首先,需要在專案中新增 MyBatis-Plus 和分頁外掛的相關依賴。使用 Maven,在 pom.xml 檔案中新增:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

2. 配置分頁外掛

官方文件說明 https://baomidou.com/plugins/pagination/
在 Spring Boot 專案中,通常需要在配置類中新增分頁外掛配置。建立一個配置類來配置 MyBatis-Plus 分頁外掛。

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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;

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

3. 使用分頁外掛

MyBatis-Plus 分頁外掛提供了 Page 類用於分頁查詢。可以在 Mapper 介面中使用分頁查詢方法,或者在 Service 層中進行呼叫。

示例:使用分頁外掛進行查詢

假設有一個 User 實體類和對應的 Mapper 介面:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 自定義分頁查詢方法
    Page<User> selectUserPage(Page<User> page);
}

在 Service 層中使用分頁查詢:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public Page<User> getUserPage(int pageNum, int pageSize) {
        Page<User> page = new Page<>(pageNum, pageSize);
        return userMapper.selectPage(page, null);
    }
}

在 Controller 層中呼叫 Service 層方法進行分頁查詢:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public Page<User> getUsers(@RequestParam int pageNum, @RequestParam int pageSize) {
        return userService.getUserPage(pageNum, pageSize);
    }
}

4. 配置分頁外掛屬性

分頁外掛的一些常見配置項可以在 application.propertiesapplication.yml 中進行設定。

# application.properties
mybatis-plus.configuration.log-impl=STDOUT_LOGGING
mybatis-plus.global-config.db-config.id-type=auto

5. 處理分頁查詢引數

在分頁查詢中,可以透過 Page 類傳遞分頁引數,如當前頁碼和每頁記錄數。分頁外掛會自動處理 SQL 查詢,生成分頁所需的 LIMITOFFSET

Page<User> page = new Page<>(1, 10); // 第1頁,每頁10條記錄
Page<User> userPage = userMapper.selectPage(page, null);

總結

  1. 新增依賴:在專案中新增 MyBatis-Plus 和分頁外掛的依賴。
  2. 配置外掛:在配置類中配置 MyBatis-Plus 分頁外掛。
  3. 使用分頁:在 Mapper 和 Service 層使用 Page 類進行分頁查詢。
  4. 分頁查詢引數:透過 Page 類傳遞分頁引數,外掛會自動處理分頁 SQL。

這樣配置和使用 MyBatis-Plus 的分頁外掛可以方便地進行分頁查詢,並簡化了分頁處理的複雜性。

相關文章