Mybatis-Plus分页查询
分页插件
1、调用通用mapper提供的selectPage分页方法;
2、自定义查询方法使用分页功能:
- mapper接口中的方法返回值是Page<User>类型
- 第一个参数要求是Page<User>类型
3、映射文件中可以使用sql标签定义公共sql片段,在要使用的地方使用include标签进行引用。
application.yml
server:
port: 8080
#数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus212?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
type: com.zaxxer.hikari.HikariDataSource
mybatis-plus:
configuration:
#配置日志信息
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置mapper映射文件的位置,默认在类路径/mapper*.xml
mapper-locations: classpath:/mapper/*.xml
#设置指定包下所有类设置类型别名
type-aliases-package: com.dzqc.pojo
global-config:
db-config:
#统一设置实体类对应的数据表的默认前缀
table-prefix: t_
#设置主键自增
id-type: auto
创建一个MyBatisPlusConfig类,先建一个包config
package com.dzqc.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//添加分页插件
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
//添加乐观锁插件
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
}
测试类Page
package com.dzqc;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dzqc.mapper.UserMapper;
import com.dzqc.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class PageTest {
@Autowired
private UserMapper userMapper;
@Test
public void testpage(){
//设置分页参数
Page<User> page = new Page<>(1,2);
//调用分页查询方法
userMapper.selectPage(page,null);
List<User> records = page.getRecords();
records.forEach(System.out::println);
System.out.println("总页数:"+page.getPages());
System.out.println("总记录数:"+page.getTotal());
System.out.println("当前页码:"+page.getCurrent());
System.out.println("每页记录数:"+page.getSize());
System.out.println("是否有上一页:"+page.hasPrevious());
System.out.println("是否有下一页:"+page.hasNext());
}
@Test
public void testPage2(){
//设置分页参数
Page<User> page = new Page<>(1, 2);
//调用自定义分页查询方法
userMapper.selectPageByAge(page,20);
//获取分页查询结果
List<User> records = page.getRecords();
records.forEach(System.out::println);
System.out.println("总页数:"+page.getPages());
System.out.println("总记录数:"+page.getTotal());
System.out.println("当前页码:"+page.getCurrent());
System.out.println("每页记录数:"+page.getSize());
System.out.println("是否有上一页:"+page.hasPrevious());
System.out.println("是否有下一页:"+page.hasNext());
}
}
测试结果