MyBatisPlus 分页插件的配置 数据分页 封装全局分页

发布于:2024-07-07 ⋅ 阅读:(32) ⋅ 点赞:(0)

设置配置类

@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);
    }

}

网站公告

今日签到

点亮在社区的每一天
去签到