1.依赖坐标
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>x.x.x</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>x.x.x</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>x.x.x</version>
</dependency>
2.配置数据源信息
server:
# 端口号
port: 8080
# Spring配置
spring:
# 数据源配置
datasource:
# 数据库连接池类型
type: com.alibaba.druid.pool.DruidDataSource
# Driver
driver-class-name: com.mysql.cj.jdbc.Driver
# url
url:
# 数据库账号
username:
# 数据库密码
password:
# MyBatis-Plus配置
mybatis-plus:
configuration:
# MyBatis-Plus日志输出实现
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.定义分页拦截器
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MpConfig {
@Bean
public MybatisPlusInterceptor createMpInterceptor() {
// 定义MyBatis-Plus拦截器
MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
// 添加具体的拦截器
mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mpInterceptor;
}
}
4.制作分页功能
(1)Page类主要属性
属性 | 描述 |
---|---|
protected long current | 当前页码 |
protected long size | 每页显示条数 |
protected long total | 总记录数,查询后由 MyBatis-Plus 填充 |
protected List records | 当前页的记录列表,查询后由 MyBatis-Plus 填充 |
protected boolean optimizeCountSql | 是否进行 count sql 优化。针对只需要查询当前页数据不需要知道总记录数的场景,可以设置为 true,以减少数据库压力。默认为 false |
protected List orders | 排序规则,用于构造排序的 SQL 片段 |
protected boolean searchCount | 是否进行 count 查询,默认是 true,如果 optimizeCountSql 为 true,则忽略此属性 |
protected String countId | 用于分页插件,在执行 count 查询时为防止缓存等问题,会为 count 查询生成一个随机的 key,默认值为 null |
(2)Page类常用方法
方法 | 描述 |
---|---|
public long getCurrent() | 获取当前页码 |
public long getSize() | 获取每页显示条数 |
public long getPages() | 获取总页数 |
public long getTotal() | 总记录数 |
public List getRecords() | 获取当前页的记录集合 |
(3)代码示例
IPage<User> page = new Page<>(1, 2);
userMapper.selectPage(page, null);
System.out.println("当前页码值:" + page.getCurrent());
System.out.println("每页显示数量:" + page.getSize());
System.out.println("一共多少页:" + page.getPages());
System.out.println("一共多少条数据:" + page.getTotal());
System.out.println("数据内容:" + page.getRecords());