前言
首先要说,这个插件不是什么大厂的东西。官网网址是这里 https://pagehelper.github.io/ 小巧好用,侵入小。所以,mybatis的分页就一直用这个搞定了。
引入
开始的时候,踩过一些版本不匹配的坑。mybatis在3.0左右的一些小版本有些变化,需要试下不同的版本,具体可以看官网说明。不过我现在都用starter来引入,直接帮我引入了对应的mybatis版本,也就不操心这个事了。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.7</version>
</dependency>
配置
我的配置如下:
pagehelper:
#我用的postgresql数据库,所以配置的这个方言
helper-dialect: postgresql
# 分页合理化,如果开启,则超出页码上限则总是返回最后一页
reasonable: false
#支持方法参数传入,这样我们才能使用后面的params里面的东西
supportMethodsArguments: true
#这就是分页改sql的配置,固定的,记住就好
params: count=countSql
目前我还没用过别的配置。
调用
之所以我喜欢这个插件就是因为这个插件在调用的过程中侵入性很小,具体看我下面这些代码:
//列表查询
public PageContainer<IdValueEntity> getIdValueEntityByType(long type, PageParam pageParam){
//校验数值类型是否合法,如果类型不存在则抛出异常
ValidateUtil.isTrue(idValueEntityDao.isExists(type, CommonConst.IDVALUE_TYPE),null,null);
//设置分页查询参数
PageHelper.startPage(pageParam.getPageNum(),pageParam.getPageSize());
//进行查询
List<IdValueEntity> data=idValueEntityDao.getIdValueEntitiesByType(type);
//设置分页数据信息
PageInfo<IdValueEntity> pageInfo=new PageInfo<>(data);
//构建返回值
PageContainer<IdValueEntity> pageContainer = new PageContainer<>();
//从分页数据信息中读取数据
pageContainer.setData(pageInfo.getList());
pageContainer.setTotalCount(pageInfo.getTotal());
pageContainer.setPageInfo(pageParam);
return pageContainer;
}
上面的代码中,PageHelper,PageInfo都是框架的内置类型。可以看到,在查询前通过PageHelper设置分页参数,查询后通过PageInfo提取数据,然后不改任何本来的声明代码,一切棒棒哒。PageContainer是我自己创建的一个封装类,不要迷惑。
不足
其实我没法发现什么不足啦。就是,对于分页参数,个人觉得startCount和endCount的参数的兼容性更好,但是这个框架似乎只支持pageCount和PageSize这种参数。或许也支持但是我没发现吧。不过,先这么用吧。
网友评论