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);
}
}