mybatisplus分页插件
·
1、配置类注册mybatisplus核心插件,同时添加分页插件
@Configuration
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
//初始化核心插件
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分页插件
PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
pageInterceptor.setMaxLimit(1000L);//设置分页上限
interceptor.addInnerInterceptor(pageInterceptor);
return interceptor;
}
}
2、测试分页
@Test
void queryUserPage(){
int pageNum = 1;
int pageSize = 5;
Page<User> page = new Page<>(pageNum,pageSize);
page.addOrder(new OrderItem("id",true));
Page<User> userPage =userService.page(page);
System.out.println("total"+userPage.getTotal());
System.out.println("pages"+userPage.getPages());
List<User> users= userPage.getRecords();
users.forEach(System.out::println);
}
3、简单分页查询案例
含有过滤条件
准备查询请求参数实体类
@Data
@ApiModel(description = "分页查询实体")
public class PageQuery {
@ApiModelProperty("页码")
private Integer pageNo = 1;
@ApiModelProperty("每页条数")
private Integer pageSize = 5;
@ApiModelProperty("排序字段")
private String sortBy;
@ApiModelProperty("是否升序")
private Boolean isASC = true;
public <T> Page<T> toMpPage(OrderItem ... orderItems) {
//构建分页条件
Page<T> page = new Page<>(pageNo, pageSize);
//排序条件
if(sortBy != null){
page.addOrder(new OrderItem(sortBy, isASC));
}else if(orderItems != null){
page.addOrder(orderItems);
}
return page;
}
public <T> Page<T> toMpPageDefaultSortById() {
return toMpPage(new OrderItem("id", true));
}
public <T> Page<T> toMpPage(String defaultSortBy,Boolean defaultAsc) {
return toMpPage(new OrderItem(defaultSortBy, defaultAsc));
}
}
准备要分页的实体类继承分页实体

准备返回实体
@Data
@ApiModel(description = "分页结果")
public class PageResult<T> {
@ApiModelProperty("总条数")
private Long total;
@ApiModelProperty("总页数")
private Long pages;
@ApiModelProperty("集合")
private List<T> list;
public static <PO,VO> PageResult<VO> of(Page<PO> p,Class<VO> clazz){
//封装vo
PageResult<VO> pageResult = new PageResult<>();
pageResult.setTotal(p.getTotal());
pageResult.setPages(p.getPages());
List<PO> records= p.getRecords();
if(CollUtil.isEmpty(records)){
pageResult.setList(Collections.emptyList());
return pageResult;
};
pageResult.setList(BeanUtil.copyToList(records, clazz));
//返回
return pageResult;
}
public static <PO,VO> PageResult<VO> of(Page<PO> p, Function<PO,VO> convertor){
//封装vo
PageResult<VO> pageResult = new PageResult<>();
pageResult.setTotal(p.getTotal());
pageResult.setPages(p.getPages());
List<PO> records= p.getRecords();
if(CollUtil.isEmpty(records)){
pageResult.setList(Collections.emptyList());
return pageResult;
};
pageResult.setList(records.stream().map(convertor).collect(Collectors.toList()));
//返回
return pageResult;
}
}
serviceImpl
@Override
public PageResult queryUserPage(userRequest userRequest) {
//构建分页条件
Page<User> page =userRequest.toMpPageDefaultSortById();
//构建查询条件
Page<User> result =lambdaQuery()
.like(userRequest.getUsername() != null, User::getUsername, userRequest.getUsername())
.eq(userRequest.getStatus() != null, User::getStatus, userRequest.getStatus())
.ge(userRequest.getMinMoney() != null, User::getMoney, userRequest.getMinMoney())
.le(userRequest.getMaxMoney() != null, User::getMoney, userRequest.getMaxMoney())
.page(page);
//封装vo
return PageResult.of(result,user -> {
//拷贝基础属性
userVo vo= BeanUtil.toBean(user, userVo.class);
//特殊逻辑处理
vo.setUsername(vo.getUsername().substring(0,vo.getUsername().length() - 2) + "**");
return vo;
});
}
controller
@ApiOperation("条件分页查询用户接口")
@GetMapping("/page")
public PageResult<userVo> queryUserPage(userRequest userRequest) {
return userService.queryUserPage(userRequest);
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)