Spring Boot Data Jpa中使用mybatis分页插件的问题

本文介绍如何在Spring Boot项目中配置并使用Mybatis分页插件PageHelper,包括YAML配置、Maven依赖及避免JPA与PageHelper冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
	}

如图所示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值