简单介绍
MyBatis是一种Java持久化框架,它可以帮助开发者管理应用程序的SQL语句、事务以及连接处理等。在MyBatis中,分页查询是非常常见的需求,为了使MyBatis实现分页更为便捷,可以使用MyBatis的分页插件来完成。
MyBatis的分页插件有很多,包括MyBatis-Primary、PageHelper、Mybatis-Paginator等等,这些插件的使用方式都很相似,这里以PageHelper插件为例介绍下MyBatis的分页插件。
步骤
使用MyBatis分页插件需要进行以下步骤:
1.加入依赖,在项目的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
这个依赖会自动集成PageHelper分页插件和Spring Boot自动配置。
2.配置PageHelper,在 src/main/resources/application.properties 文件中添加如下配置:
# 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
上面的配置会告诉 PageHelper 使用 MySQL 方言,并开启了合理化分页(reasonable=true),它会对 pageNum、pageSize 参数进行自动修正,确保查询出来的结果数量正确。params=count=countSql 配置会开启插件对 count 查询的支持。
3.分页查询,在 Mapper 文件中,编写分页查询的 SQL 语句:
<select id="findBooksByCategoryId" resultMap="bookResultMap">
SELECT * FROM book WHERE category_id=#{categoryId}
</select>
在 Service 或 Controller 中,调用 MyBatis 查询方法并设置分页参数:
int pageNum = 1;
int pageSize = 10;
PageHelper.startPage(pageNum, pageSize);
List<Book> books = bookMapper.findBooksByCategoryId(categoryId);
PageInfo pageInfo = new PageInfo<>(books);
其中,PageHelper.startPage(pageNum, pageSize) 会自动在当前线程绑定分页参数,本次查询结果不会被影响到其他查询。
4.获取分页结果,调用 PageInfo 对象的方法获取分页结果:
long total = pageInfo.getTotal(); // 总记录数
int pages = pageInfo.getPages(); // 总页数
int currentPage = pageInfo.getPageNum(); // 当前页码
List<Book> books = pageInfo.getList(); // 分页结果
总结:
总的来说,使用mybatis分页插件可以很方便的帮我们实现分页的需求,在springboot项目中使用,首先就是需要先引入改插件,再对改插件进行配置,最后就是使用。
而使用的方式也很简单,跟之前的查询没什么区别,就是在bookMapper.findBooksByCategoryId(categoryId)查询前先PageHelper.startPage(pageNum, pageSize);指定下当前页数和一页的大小,查询出来再用PageInfo对象进行包装,即如下代码是使用重点:
int pageNum = 1;
int pageSize = 10;
PageHelper.startPage(pageNum, pageSize);
List<Book> books = bookMapper.findBooksByCategoryId(categoryId);
PageInfo pageInfo = new PageInfo<>(books);
以上就是在Spring Boot项目中使用MyBatis分页插件的步骤,需要注意的是,具体使用方法还可能因为不同的插件而有所差别,具体请参考相关插件的使用说明文档。