public class BroadScopeController { @Resource private BroadScopeService broadScopeService; @PostMapping ("/queryPage") /** * 分页查询 */ public Result queryPage(@RequestBody BroadScopePageDTO dto) { //如果穿了页数的话,就默认第一页,然后每页10条 if (Objects.isNull(dto.getPage())||dto.getPage()<1) { dto.setPage(1); } if (Objects.isNull(dto.getPageSize())||dto.getPageSize()<1) { dto.setPageSize(10); } PageResult<BroadScopeVO> queryPage =broadScopeService.queryPage(dto); return Result.success(queryPage); }
@Service public interface BroadScopeService { PageResult<BroadScopeVO> queryPage(BroadScopePageDTO dto);}
@Service public class BroadScopeServiceImpl implements BroadScopeService { @Resource private BroadScopeMapper broadScopeMapper; @Resource private BroadScopePromptMapper broadScopePromptMapper; /** * 分页查询 * @param dto * @return */ @Override public PageResult<BroadScopeVO> queryPage(BroadScopePageDTO dto) { // 计算偏移量,防止sql注入 int offset = (dto.getPage() - 1) * dto.getPageSize(); List<BroadScopePromptCategory> category = broadScopeMapper.queryPage(offset, dto.getPageSize()); // 判断是否为空,没有配置指令,就返回null if (ObjectUtils.isEmpty(category)) { return null; } // 实体类转vo List<BroadScopeVO> categoryVO = new ArrayList<>(); for (BroadScopePromptCategory broadScopePromptCategory : category) { BroadScopeVO broadScopeVO = new BroadScopeVO(); // Bean拷贝失败,换个工具类, BeanUtils.copyProperties(broadScopePromptCategory, broadScopeVO, BroadScopeVO.class); categoryVO.add(broadScopeVO); } PageResult<BroadScopeVO> data = new PageResult<>(); data.setPage(dto.getPage()); data.setPageSize(dto.getPageSize()); data.setRows(categoryVO); data.setTotal(category.size()); return data; }
@Mapper public interface BroadScopeMapper { /** * 分页查询 * @param offset * @param pageSize * @return */ List<BroadScopePromptCategory> queryPage(@Param("offset") int offset,@Param("pageSize") Integer pageSize);
<!--分页查询--> <select id="queryPage" resultType="com.example.domain.entity.BroadScopePromptCategory"> select id, category_name, sort from broadscope_prompt_category order by sort LIMIT #{pageSize} OFFSET #{offset} </select>
统一返回类
@Data @NoArgsConstructor @AllArgsConstructor public class Result { private Integer code;//响应码,1 代表成功; 0 代表失败 private String msg; //响应信息 描述字符串 private Object data; //返回的数据 //增删改 成功响应 public static Result success(){ return new Result(1,"success",null); } //查询 成功响应 public static Result success(Object data){ return new Result(1,"success",data); } //失败响应 public static Result error(String msg){ return new Result(0,msg,null); } }
分页传入dto
@Data public class BroadScopePageDTO { /** * 当前页 */ private Integer page; /** * 每页展示几条 */ private Integer pageSize; }
返回的数据vo:
@Data @AllArgsConstructor @NoArgsConstructor public class BroadScopeVO implements Serializable { private Long id; /** * 类目名称 */ private String categoryName; /** * 排序 */ private Long sort; }
全局异常类:
/** * 自定义全局异常处理器 */ public class BusinessException extends RuntimeException { public BusinessException(String message) { super(message); } public BusinessException(){ } }
信息常量类:
/** * 信息提示常量类 */ public class MessageConstant { public static final String CATEGORY_EXISTS = "该分类已经存在"; public static final String SAVE_FAILED = "新增失败"; public static final String DELETE_FAILED = "删除失败"; public static final String CATEGORY_DELETE = ",分类下有指令,删除失败"; public static final String UPDATE_FAILED = "修改失败"; public static final String SORT_NULL = "排序字段不能为空"; public static final String SORT_FAILED = "排序失败"; /** * 参数不能为空 */ private static final String PARAMETER_NULL = "参数不能为空"; public static final String ID_NULL = "id不能为空"; }
测试: