2026-02-04 09:10:27
添加依赖
确保项目中已引入 MyBatis-Plus 依赖(Maven 示例):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本</version>
</dependency>配置分页插件
在 Spring Boot 配置类中注册分页插件:
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件(自动识别数据库类型)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
*注意*:不同版本可能使用 =PaginationInterceptor=(旧版)或 =PaginationInnerInterceptor=(新版)。
创建分页对象
使用 Page 类定义当前页码和每页大小:
Page<User> page = new Page<>(1, 10); // 第1页,每页10条调用分页方法
在 Mapper 接口中直接使用 selectPage 方法:
@Mapper
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectPage(Page<User> page, @Param("name") String name);
}
对应 XML 映射文件:
<select id="selectPage" resultType="User">
SELECT * FROM user WHERE name = #{name}
</select>调用示例
在 Service 或 Controller 中调用:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUsers(String name) {
Page<User> page = new Page<>(1, 10);
return userMapper.selectPage(page, name);
}
}
*关键点*:分页参数
Page必须作为方法第一个参数传入,插件会自动拦截 SQL 并添加分页逻辑(如 =LIMIT=)。
自定义复杂分页
若需自定义 SQL 分页,只需在 Mapper 方法中接收 Page 对象:
IPage<User> selectCustomPage(Page<User> page, Integer age);
<select id="selectCustomPage" resultType="User">
SELECT * FROM user WHERE age > #{age}
</select>优化分页性能
*关闭 Count 优化*:默认会执行 COUNT 查询统计总数,若不需要可关闭:
page.setOptimizeCountSql(false);*避免复杂子查询*:大数据量分页时,建议通过 ID 分页二次查询。
IPage 对象包含分页信息:
IPage<User> page = ...;
List<User> records = page.getRecords(); // 当前页数据
long total = page.getTotal(); // 总记录数
int pages = page.getPages(); // 总页数
int current = page.getCurrent(); // 当前页码
通过以上步骤,即可快速实现高效的分页功能。完整示例可参考官方网页或搜索结果中的代码片段。