在使用之前,首先要做一下相对应的mybatisPlus的分页配置
新建config下的mybatisPlusConfig类,添加代码如下
@Configuration
public class MybatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//1.创建分页查询插件
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
paginationInnerInterceptor.setMaxLimit(1000L);
//2.添加分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
紧接着创建两个查询类
代码分别如下
package com.wms.domain.Query;
import lombok.Data;
import java.util.List;
@Data
public class PageQuery<T> {
private Integer pageNo = 1;
private Integer pageSize = 2;
private String sortBy;
private boolean isAac;
private List<T> list;
}
package com.wms.domain.Query;
import lombok.Data;
@Data
public class UserQuery extends PageQuery{
private String name;
}
创建的UserQuery可以继承PageQuery,这样无论再新建多少个其他的分页查询,在pageNo,pageSize这块儿都不用写了,方便很多,而在UserQuery里面只需要写在分页查找时的条件就行,比如我这个是name那就可以根据name查询。
下面是Controller里面的代码
//查询(模糊,匹配)
@GetMapping("/listP")
public PageDTO<User> getPage(@RequestBody UserQuery userQuery){
PageDTO<User> userPageDTO = iUserService.getPageQuery(userQuery);
return userPageDTO;
}
下面是serviceImpl实现类里面的代码
@Override
public PageDTO<User> getPageQuery(UserQuery userQuery) {
Page<User> page = Page.of(userQuery.getPageNo(), userQuery.getPageSize());
Page<User> p = lambdaQuery().like(userQuery.getName() != null, User::getName, userQuery.getName())
.page(page);
PageDTO<User> dto = new PageDTO<>();
dto.setTotal(p.getTotal());
dto.setPages(p.getPages());
dto.setList(p.getRecords());
return dto;
}
下面是User定义的实体类
package com.wms.domain.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author 选
* @since 2024-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 账号
*/
private String no;
/**
* 名字
*/
private String name;
/**
* 密码
*/
private String password;
private Integer age;
/**
* 性别
*/
private Integer sex;
/**
* 电话
*/
private String phone;
/**
* ⻆⾊ 0超级管理员,1管理员,2普通账号
*/
private Integer roleId;
/**
* 是否有效,Y有效,其他⽆效
*/
private String isvalid;
}