概要
提示:SpringBoot框架中添加MyBatisPlus分页插件
Maven依赖引入
<!-- mybatis plus 管理 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
MybatisPlus依赖在3.5.9及以上的注意了
JDK8或者以下
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
</dependency>
JDK11+
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
</dependency>
在配置类中注册MyBatisPlus的核心插件,同时添加分页插件
@Configuration
//只有在类路径中存在 MybatisPlusInterceptor 和 BaseMapper 类时,当前配置类才会生效。
@ConditionalOnClass({MybatisPlusInterceptor.class, BaseMapper.class})
public class MyBatisConfig {
@Bean
//确保 mybatisPlusInterceptor 方法仅在没有其他 MybatisPlusInterceptor Bean 的情况下执行。
@ConditionalOnMissingBean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
//1.初始化核心插件
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//2.添加分页插件
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
//设置分页上限
paginationInnerInterceptor.setMaxLimit(1000L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
使用分页的API测试案例
@Test
void testPageQuery() {
//1.查询
int pageNo = 1, pageSize = 5:
//1.1.分页参数
Page<User> page = Page.of(pageNo,pageSize);
//1.2.排序参数
page.addOrder(new OrderItem("balance",false));
//1.3分页查询
Page<User> p = userService.page(page);
//2.总条数
System.out.println("total = " + p.getTotal());
//3.总页数
System.out.println("pages = "+ p.getPages());
//4.分页数据
List<User> records = p.getRecords();
records.forEach(System.out::println);
}
MyBatisPlus中的lambdaQuery使用分页查询案例
// 分页查询
Page<Item> result = itemService.lambdaQuery()
.like(StrUtil.isNotBlank(query.getKey()), Item::getName, query.getKey())
.eq(StrUtil.isNotBlank(query.getBrand()), Item::getBrand, query.getBrand())
.eq(StrUtil.isNotBlank(query.getCategory()), Item::getCategory, query.getCategory())
.eq(Item::getStatus, 1)
.between(query.getMaxPrice() != null, Item::getPrice, query.getMinPrice(), query.getMaxPrice())
.page(query.toMpPage("update_time", false));//.page使用分页查询