@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
@Autowired
private ProductMapper productMapper;
/** MyBatis-Plus分页插件的配置和使用和分页相关数据的获取 **/
@Test
public void testPage() {
/*
SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user
WHERE is_deleted=0 LIMIT ?
*/
Page page = new Page<>(1, 3);
userMapper.selectPage(page, null);
System.out.println( page.getRecords());
System.out.println("总页数:" + page.getPages());
System.out.println("总记录数" + page.getTotal());
System.out.println("是否有上一页" + page.hasNext());
System.out.println("是否有下一页:" + page.hasPrevious());
}
测试结果:
[User(id=1, name=Jone, age=18, [email protected], sex=null, isDeleted=0), User(id=2, name=Jack, age=18, [email protected], sex=null, isDeleted=0), User(id=3, name=Tom, age=18, [email protected], sex=null, isDeleted=0)]
总页数:3
总记录数8
是否有上一页true
是否有下一页:false
要获取Page
对象中的数据,你可以使用以下方法:
1. 使用getRecords()
方法:getRecords()
方法返回一个包含查询结果的List
对象。
List userList = userPage.getRecords();
你可以通过遍历userList
来访问每个User
对象的属性。
2. 使用getTotal()
方法:getTotal()
方法返回总记录数。
long total = userPage.getTotal();
这个方法返回的是满足查询条件的总记录数,方便你进行分页展示。
3. 使用其他分页的相关方法,如getCurrent()
、getSize()
、getPages()
等。
int currentPage = userPage.getCurrent(); // 当前页码
int pageSize = userPage.getSize(); // 每页显示的记录数
int totalPages = userPage.getPages(); // 总页数
这些方法可以帮助你获取当前页、每页显示的记录数和总页数等分页相关信息。
传递一个Page/IPage对象,返回一个Page/IPage对象,MybatisPlus 会自动进行分页。其中传递参数 Page/IPage 即自动分页,必须放在第一位。
/**
* 根据年龄查询用户列表,分页显示
* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 * @param age 年龄
* @return
*/
Page selectPageVo(@Param("page") Page page, @Param("age") Integer age);