设置配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//插件分页插件
PaginationInnerInterceptor paginationInnerInterceptor= new PaginationInnerInterceptor(DbType.MYSQL);
//paginationInnerInterceptor.setMaxLimit(1000L); //设置最大分页页数
//添加分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
分页实体类
@Data
@AllArgsConstructor
public class PageData {
private Integer pageNum=10;
private Integer pageSize=1;
}
全局分页
public class RequestDeal {
/**
*全局分页
*/
public static PageData getPage(){
HttpServletRequest requestAttributes = getRequestAttributes().getRequest();
//通过HttpServletRequest获取分页字段
int defPage =1; //默认参数
int defSize =10;
String pageStr =(requestAttributes.getParameter("pageNum"));
String sizeStr =(requestAttributes.getParameter("pageSize"));
if(TextCovert.isPositiveInteger(pageStr)) //判断是否为正数
{
defPage=Integer.parseInt(pageStr);
}
if(TextCovert.isPositiveInteger(sizeStr)) //判断是否为正数
{
defSize=Integer.parseInt(sizeStr);
}
PageData p =new PageData(defPage,defSize);
return p;
}
//获取当前请求的上下文
private static ServletRequestAttributes getRequestAttributes()
{
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return (ServletRequestAttributes) attributes;
}
}
Controller
哪个接口需要分页继承RequestDeal 接口
@RestController
@RequestMapping("/emp")
@RequiredArgsConstructor //只初始化必备的变量
@Api(tags = "部门管理")
public class EmpController extends RequestDeal {
private final IEmpService empService ;
@GetMapping("/search")
@ApiOperation(value = "查询员工")
public Result search(Emp emp){
Page<Emp> list =empService.searchList(emp,getPage());
return Result.page("操作成功",list.getRecords(),list.getTotal());
}
}
Service接口
PageData 为分页的参数
public interface IEmpService extends IService<Emp> {
Page<Emp> searchList(Emp emp, PageData p);
}
Service实现类
@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements IEmpService {
@Override
public Page<Emp> searchList(Emp emp, PageData p) {
Page<Emp> page =Page.of(p.getPageNum(),p.getPageSize());
Page<Emp> list = lambdaQuery()
.like(emp.getName() != null, Emp::getName, emp.getName())
.like(emp.getTele() != null, Emp::getTele, emp.getTele())
.page(page);
return list;
}
}
统一响应结果
查询分页数时需要传递 总条数 total设置空值不返回
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private int code;
private String meg;
private Object data;
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long total;
public Result(int code, String meg, Object data) {
this.code=code;
this.meg=meg;
this.data=data;
}
public static Result page(String meg,Object data,long total)
{
return new Result(200,meg,data,total);
}
public static Result success(String meg,Object data)
{
return new Result(200,meg,data);
}
public static Result error(String meg,Object data,int total)
{
return new Result(-1,meg,data);
}
}