6.MyBatis Plus分页插件
第一步:编写配置类PaginationInterceptor 分页拦截器并且加入到SpringIOC容器中
package com.xuan.comfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* xuan
* 2020/7/21
* 1870136088@qq.com
**/
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
//------------------------------------可以简化成下面的------------------------------------------
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
第二步:编写测试
- 这个page类是mybatis-plus的类
- Page指定泛型并且可以传入数据指定当前页和需要查询的数量
//测试分页
@Test
void testPaging() {
Page<User> page = new Page<>(1,5);
Page<User> users = userMapper.selectPage(page, null);
page.getRecords().forEach(System.out::println);
}
本质上还是limit语句===>SELECT id,name,age,email,version,gmt_create,gmt_modified FROM user LIMIT ?,?