1.项目配置Mybatis分页插件
在application.yml中配置如下:
#######################pageHelper#######################
pagehelper:
helper-dialect: mysql
params: count=countSql
reasonable: false
support-methods-arguments: true
2.pom.xml文件加入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
3.如果你的Service(TpShortService)是直接继承JpaRepository这个类
public interface TpShortService extends JpaRepository<TpShort, Integer>{
那么你在这个类下面写的方法
包括你使用JpaRepository自带的18个CURD方法查询出来的结果集放在PageInfo中
public R testPage(Integer shortId,@RequestParam(value="pageNow",defaultValue="1")Integer pageNow,
@RequestParam(value="pageSize",defaultValue="1") Integer pageSize) {
//开始分页
Page<Object> startPage = PageHelper.startPage(pageNow,pageSize);
//执行查询
List<TpShort> list = tpShortService.findAll(); //这个是jpa的方法
//将list放入到pageInfo对象中
PageInfo<TpShort> page = new PageInfo<TpShort>(list);
return R.ok().put("page", page);
你会发现你查询出来的结果还是显示全部并没有分页 ,Jpa 的方法无法和mybatis分页插件配合使用。
4.解决问题
最直接的解决方法是不使用jpa的查询方法 ,将该方法写在Dao层下面,sql语句在xml文件中 这种亲测有效 或者
public R testPage(Integer shortId,@RequestParam(value="pageNow",defaultValue="1")Integer pageNow,
@RequestParam(value="pageSize",defaultValue="1") Integer pageSize) {
//开始分页
Page<Object> startPage = PageHelper.startPage(pageNow,pageSize);
//将list放入到pageInfo对象中
PageInfo<TpShort> pageInfo = new PageInfo<TpShort>(tpShortMapper.getAll());//这个是mybatis自己写的sql方法
return R.ok().put("pageInfo", pageInfo);
}
如图所示