SpringBoot整合通用Mapper和PageHelper,使用PageHelper.startPage()失效的问题
使用SpringBoot创建工程,在配置好通用Mapper和PageHelper后,发现使用PageHelper.startPage()后,查询结果一直是表中的所有数据,PageHelper.startPage()失效。
SpringBoot项目中必须使用该包pagehelper-spring-boot-starter
pom.xml
<!-- 通用mapper -->
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.0.2</version>
</dependency>
<!-- PageHelper分页插件 -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency>
在配置dialect: mysql,一直报错。通过网上资料发现使用全类名可以解决该问题。但是在使用PageHelper.startPage()方法时,分页并不会生效。
application.yml中配置通用mapper和PageHelper
#通用mapper配置
mapper:identity: MYSQL#PageHelper插件配置 该配置对PageHelper不起作用。使用config包中的PageHelperConfig方式可以起作用。
pagehelper:#原来的配置 dialect: mysql #解决途径:通过debug源码,发现配置文件读取到的是“mysql”,而源码中需要的是一个类的全类名来反射,所以推断这个属性值不是mysql,而是一个全类名。dialect: com.github.pagehelper.dialect.helper.MySqlDialectreasonable: truesupport-methods-arguments: trueparams: count=countSql
查询资料发现也有使用以下配置PageHelper的,使用此配置即可正确的处理分页。原因未知,依然是满脸疑惑,但是功夫不负有心人还是将问题解决了。有知道的博友可以留言哦,谢谢。如果要配置该文件,需要将application.yml的PageHelper插件配置删除掉,否则PageHelper.startPage()仍然会失效,将会查询出所有数据。
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;@Configuration
public class PageHelperConfig {@Beanpublic PageHelper pageHelper(){PageHelper pageHelper=new PageHelper();Properties properties=new Properties();//把这个设置为true,会带RowBounds第一个参数offset当成PageNum使用properties.setProperty("offsetAsPageNum","true");//设置为true时,使用RowBounds分页会进行count查询properties.setProperty("rowBoundsWithCount","true");properties.setProperty("reasonable","true");pageHelper.setProperties(properties);return pageHelper;}
}
以下是项目中主要代码。
User实体类
@Repository
@Table(name = "user")
//mybatis通用接口mapper依赖JPA实体类采用JPA,配置表名
public class User implements Serializable {//配置主键@Idprivate String username;private String password;//省略getter和setter方法
Maper层:
UserMaper
import com.zueb.domain.User;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.spring.annotation.MapperScan;@MapperScan("com.example.mapper")
public interface UserMapper extends BaseMapper<User> {}
业务层:
IUserService
/*** 处理用户逻辑的业务层接口*/
public interface IUserService {/*** 获取用户列表* @return List<User>*/PageInfo<User> findAll(int pageNum, int pageSize);
}
UserServiceImpl
@Service
public class UserServiceImpl implements IUserService {@Autowiredprivate UserMapper userMapper;@Overridepublic PageInfo<User> findAll(int pageNum, int pageSize) {//参数pageNum是页码 参数pageSize 代表每页显示条数PageHelper.startPage(pageNum,pageSize);//调用userMapper获取所有用户List<User> users = userMapper.selectAll();PageInfo<User> pageInfo = new PageInfo<>(users);return pageInfo;}
}
控制层:
UserController
@RestController
@RequestMapping("/users")
public class UserController extends BaseController{@Autowiredprivate IUserService userService;/*** 处理获取用户列表请求* @return JsonResult对象 返回为json数据*/@RequestMapping("/userList")public JsonResult<List<User>> logout(HttpSession session) {PageInfo<User> pageInfo = userService.findAll(1,5);List<User> data = pageInfo.getList();return new JsonResult<>(OK,data);}
}
SpringBoot整合通用Mapper和PageHelper,使用PageHelper.startPage()失效的问题相关推荐
- SpringBoot整合通用mapper实现泛型BaseController增删改
SpringBoot整合通用mapper实现泛型BaseController增删改 前言:目前写项目做需求时增删改查一直用得比较频繁,但是在做开发的时候,却并不想一次一次写重复的代码,尝试着整合了一下 ...
- 一看就会一学就废之SpringBoot整合通用Mapper以及常用方法
本文适合初次学习通用Mapper新鸟阅览,老生常谈,从三个大方向入手----是什么?能干什么?怎么用? 目录 一.通用Mapper是什么? 二.通用Mapper能干什么? 三.怎么使用通用Mapper ...
- springboot整合通用mapper操作数据库
1. 建表sql create table user (`id` int PRIMARY KEY auto_increment COMMENT '用户id', `name` VARCHAR(255) ...
- SpringBoot整合通用Mapper
添加依赖 添加通用Mapper的依赖,注意还需要搭配MyBatis和对应数据库的驱动: <dependency><groupId>org.mybatis.spring.boot ...
- 【解析】spring-boot整合通用mapper
问题描述: Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the m ...
- Springboot整合通用mapper进阶1
1.自定义sql方法的使用,mapper的依赖配置文件就不一一赘述了,详情: https://blog.csdn.net/brantykl/article/details/129360320?spm= ...
- Springboot集成mybatis通用Mapper与分页插件PageHelper
Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...
- 通用返回_Springboot项目整合通用mapper
1.简介 什么是通用mapper 什么是通用mapper,用一句话概括就是,它就是一个辅助mybatis开发的组件,它不是替代mybatis,而是使mybatis更方便的开发.通用mapper提供极其 ...
- 02_Spring Cloud Alibaba整合通用Mapper+Lombok+Mysql
Spring CLoud 整合通用Mapper+Lombok+Mysql 文章目录 一.使用Spring Initializr快速创建Spring Boot应用 二.相关依赖 2.1. 添加依赖 2. ...
- SpringBoot+JdbcTemplate通用Mapper的实现
文章目录 SpringBoot+JdbcTemplate通用Mapper的实现 通用Mapper 针对User的jdbcMapper 针对 User的Service 相应的Controller Spr ...
最新文章
- _tmain和main
- python newbie——PE No.5
- 【android-tips】如何在android应用中插入百度广告(附源码)
- 转:从零开始开发一款Android App (from 简书)
- java12章_从零开始学Java 第12章 异常处理
- WAF指纹识别和XSS过滤器绕过技巧
- java流与文件——正则表达式
- 手动打开和关闭windows的相关服务
- android 动态壁纸
- java商品信息管理系统代码_[源码分享]学生信息管理系统(管理员)
- 供应商否认iPhone 12延迟推出传闻 称生产按计划进行
- 定时任务 Wpf.Quartz.Demo.3
- 最新HoloLens在windows10上的开发配置(1)
- vant修改用户头像
- 西北工业大学电工学mooc第六章测试题及解析
- 加权最小二乘法matlab,加权最小二乘法matlab
- 给文件及文件夹设置密码
- linux安装识别不到scsi硬盘,Linux下不重起识别SCSI硬盘
- 【JDK源码】集合源码目录,冲冲冲
- JavaScript 的物理引擎对比