mybatis-plus分页插件

创建时间:2025-11-14 08:55
长度:2673
浏览:0
评论:0

官方地址: https://baomidou.com/plugins/pagination/


MyBatis-Plus 的分页插件 PaginationInnerInterceptor 提供了强大的分页功能,支持多种数据库,使得分页查询变得简单高效。


和上一章的乐观锁一样的添加,如果有多个插件,那就直接在mybatisPlusInterceptor里面加就好了


package org.huangcy.mybatisplusdemo.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan(basePackages = "org.huangcy.mybatisplusdemo.mapper")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
        return interceptor;
    }
}

注意:有的版本没有

我用的是PaginationInnerInterceptor

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>



测试

    @Test
    void testPage() {
        System.out.println("----------------------------------------");
        Page<User> page = new Page<>(1, 5);
        Page<User> userPage = userMapper.selectPage(page, null);
        System.out.println(userPage.getRecords()); // 获取分页数据
        System.out.println(userPage.getPages()); // 获取总页数
        System.out.println(userPage.getTotal()); // 获取总记录数
        System.out.println(userPage.getCurrent()); // 获取当前页码
        for (User user : userPage.getRecords()) {
            System.out.println(user);
        }
        System.out.println("----------------------------------------");
    }


分层的设计

UserService.java


/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 基础分页查询 - 查询所有用户
     * @param current 当前页码
     * @param size 每页大小
     * @return 分页结果
     */
    Page<User> getPageList(int current, int size);
}


UserServiceImpl.java


/**
 * 用户服务实现类
 */
@Service
public class UserServiceImpl implements UserService {
    
    @Resource
    private UserMapper userMapper;
    
    /**
     * 基础分页查询 - 最简单的分页查询方式
     */
    @Override
    public Page<User> getPageList(int current, int size) {
        // 创建分页对象:参数1是当前页,参数2是每页显示的记录数
        Page<User> page = new Page<>(current, size);
        
        // 执行分页查询
        // selectPage 会自动拼接 LIMIT 语句,并且会执行 count 查询总记录数
        return userMapper.selectPage(page, null);
    }
    
}






评论(共0条)