分页查询
2022年11月12日小于 1 分钟
分页查询
为降低开发成本,使用 MyBatis Plus 框架自动生成业务的增删改查重复代码,并使用 LambdaQueryWrapper 实现更灵活地自定义查询。
遵循 Restful 设计规范编写接口,降低前后端接口沟通和理解成本。
前端参数:(page, pagesize, name)
mp 插件配置
/**
* 配置MP的分页插件
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
关于 Page
public class Page<T> implements IPage<T> {
private static final long serialVersionUID = 8545996863226528798L;
/**
* 查询数据列表
*/
protected List<T> records = Collections.emptyList();
/**
* 总数
*/
protected long total = 0;
/**
* 每页显示条数,默认 10
*/
protected long size = 10;
/**
* 当前页
*/
protected long current = 1;
/**
* 排序字段信息
*/
@Getter
@Setter
protected List<OrderItem> orders = new ArrayList<>();
/**
* 自动优化 COUNT SQL
*/
protected boolean optimizeCountSql = true;
/**
* 是否进行 count 查询
*/
protected boolean isSearchCount = true;
/**
* 是否命中count缓存
*/
protected boolean hitCount = false;
/**
* countId
*/
@Getter
@Setter
protected String countId;
/**
* countId
*/
@Getter
@Setter
protected Long maxLimit;
...
}
具体使用
@GetMapping("/page")
public R<Page<Employee>> page(int page,int pageSize,String name){
log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);
//构造分页构造器
Page<Employee> pageInfo = new Page<>(page,pageSize);
//构造条件构造器
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
//添加过滤条件
queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
//添加排序条件
queryWrapper.orderByDesc(Employee::getUpdateTime);
//执行查询
employeeService.page(pageInfo,queryWrapper);
return R.success(pageInfo);
}