前面我们已经把mybatis生成器整合进来,并且生成好了model和mapper,这一节我们再把mybatis的分页插件PageHelper集成进来,我们mybatis基本的框架就整合完成了,可以放心的开发dao模块了。
引入依赖
dependencies {
...
implementation 'com.github.pagehelper:pagehelper-spring-boot-starter:1.4.2'
}
配置插件
在application.yml中增加分页插件的配置
pagehelper:
# 分页插件会自动检测连接的数据库,自动选择合适的分页实现(可以不设置)
helper-dialect: mysql
# 对RowBounds作为分页参数时有效,一般不用它,默认值为false
offset-as-page-num: false
# 对RowBounds进行count查询,一般不用它,默认值为false
row-bounds-with-count: false
# 为true则pageNum参数小于1时设为第一页,大于总页数时设为最后一页
reasonable: true
使用分页API
接下来我们写一个单元测试来测试分页API的使用:
package com.xiaojuan.boot.dao.mapper;
import ...
...
public class CategoryMapperTest {
...
@Test
public void testInsertAndQueryByPage() {
for (int i = 0; i < 20; i++) {
Category entity = new Category();
entity.setLevel((byte)1);
entity.setOrderNum((byte)(i + 1));
entity.setName("分类" + i);
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
categoryMapper.insertSelective(entity);
}
PageHelper.startPage(5, 5);
List<Category> categories = categoryMapper.select(QueryExpressionDSL::where);
PageInfo<Category> pageInfo = new PageInfo<>(categories);
assertEquals(23, pageInfo.getTotal());
assertEquals(3, pageInfo.getList().size());
}
}
通过单元测试,我们发现分页没问题,ok!
到目前位置,spring boot和mybatis的整合就告一段落了,我们又要重新启航了。