1:这篇文章主要就是采用pageHelper分页插件对查询出的结果进行分页操作:
pom文件是在前面多数据源的基础上改造过来的
pom文件: 在前面只是添加了一个pageHelper依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 这是一个web应用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- swagger文档 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--aop-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
配置文件类:
server:
port: 9089
spring:
datasource:
master:
# class name
driver-class-name: com.mysql.cj.jdbc.Driver
#springboot默认的连接池
type: com.zaxxer.hikari.HikariDataSource
#规定写jdbcUrl路径
jdbcUrl: jdbc:mysql://127.0.0.1:3306/springboot?useSSL=false&serverTimezone=UTC
username: root
password: 123456
slave:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
jdbcUrl: jdbc:mysql://127.0.0.1:3306/learn?useSSL=false&serverTimezone=UTC
username: root
password: 123456
# pagehelper
pagehelper:
helperDialect: mysql #支持mysql
reasonable: true #合理化,小于0既查询第一页,大于就查询最后一页
supportMethodsArguments: true #是否允许通过mapper接口传递参数
params: count=countSql #总页数为countSql
对分页进行了改造:主要是添加了三个工具类:
@Data
public class PageRequest {
private int pageNum;
private int pageSize;
}
@Data
public class PageResult {
private int pageNUm;
private int pageSize;
private long totalSize;
private long totalPages;
private List<?> data;
}
public class PageUtil {
public static PageResult getPageResult(PageInfo<?> pageInfo){
PageResult pageResult = new PageResult();
pageResult.setPageNUm(pageInfo.getPageNum());
pageResult.setPageSize(pageInfo.getPageSize());
pageResult.setTotalSize(pageInfo.getTotal());
pageResult.setTotalPages(pageInfo.getPages());
pageResult.setData(pageInfo.getList());
return pageResult;
}
}
注意的一个关注点就是:
/**
* 对分页结果进行了封装
* @param pageRequest
* @param tableName
* @return
*/
@Override
public PageResult findAll(PageRequest pageRequest,String tableName) {
return PageUtil.getPageResult(getPageInfo(pageRequest,tableName));
}
/**
* 这里是进行了分页操作
* @param pageRequest
* @param tableName
* @return
*/
private PageInfo<UserLog> getPageInfo(PageRequest pageRequest, String tableName){
int pageNum = pageRequest.getPageNum();
int pageSize = pageRequest.getPageSize();
PageHelper.startPage(pageNum, pageSize);
List<UserLog> userLogs = userLogMapper.selectAll(tableName);
return new PageInfo<UserLog>(userLogs);
}