MyBatis Plus应用(三)分页插件的实践
MyBatisPlusadmin 发布于:2022-07-03 10:48:04
阅读:loading
数据分页在日常应用开发中会被经常使用,MyBatis Plus提供了分页插件的支持,使得对于查询分页的功能实现变得更加的简单了,若非如此需要我们手动编写count语句和列表查询语句,同时count语句某些场景还需要手动的进行SQL语句优化,而这些MyBatis Plus的分页插件都已经替我们实现好了,同时兼容多种数据库的应用。本文通过两个测试案例的实践来展示具体的分页应用,参考实现过程如下。
由于是SpringBoot项目环境,需要配置PaginationInterceptor组件,此步骤必不可少,若缺少后本篇文章中的测试代码虽可正常运行,但仅会被视为普通查询,查询的数据结果并非为实际的分页查询语句,需要格外注意。
package cn.chendd.mybatisplus.config;
import ...;
/**
* MybatisPlusConfig
*
* @author chendd
* @date 2022/7/3 10:40
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件配置
* @return 分页插件配置
*/
@Bean
public PaginationInterceptor getPaginationInterceptor(){
PaginationInterceptor interceptor = new PaginationInterceptor();
return interceptor;
}
}
本次测试案例通过调用内置的查询分页(支持查询条件的传递)和自定义Mapper函数的方式来展示分页插件的应用,更多的应用代码可转至示例源码查看,本文就罗列出部分的代码,参考如下:
package cn.chendd.mybatisplus;
import ...;
/**
* 分页测试
*
* @author chendd
* @date 2022/7/3 9:14
*/
public class PageTest extends BaseBootstrapTest {
@Resource
private UserService userService;
@Test
public void page() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<User> pageFinder = new Page<>(1 , 10);
IPage<User> page = this.userService.page(pageFinder, queryWrapper);
System.out.println(String.format("pageNumber = %d , pageSize = %d , pages = %d , totals = %d , data = %s" ,
page.getCurrent() , page.getSize() , page.getPages() , page.getTotal() , page.getRecords().toString()));
}
@Test
public void pageForMapper() {
IPage<User> pageFinder = new Page<>(1 , 10);
IPage<User> page = this.userService.pageList(pageFinder);
System.out.println(String.format("pageNumber = %d , pageSize = %d , pages = %d , totals = %d , data = %s" ,
page.getCurrent() , page.getSize() , page.getPages() , page.getTotal() , page.getRecords().toString()));
}
}
/**
* 用户信息Mapper
*
* @author chendd
* @date 2022/6/30 21:29
*/
public interface UserMapper extends BaseMapper<User> {
/**
* 查询数据分页
* @param pageFinder 分页参数
* @return 分页数据
*/
IPage<User> pageList(IPage<User> pageFinder);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.chendd.mybatisplus.user.mapper.UserMapper">
<!-- 查询数据分页 -->
<select id="pageList" resultType="cn.chendd.mybatisplus.user.model.User">
select t1.* from Sys_User t1
</select>
</mapper>
(基于对象的查询分页会增加逻辑删除字段)
(自定义Mapper的查询分页需要自己增加逻辑删除字段)
点赞
发表评论
当前回复:作者