//分页对象

@Data
public class PageSimpleVO<T> {
    //当前页
    private Integer currentPage;
    // 总数
    private Integer totalNumber;
    // 列表
    private List<T> list;
    // 其他数据
    private Map<String,Object> map;

    public PageSimpleVO() {

    }

    public PageSimpleVO(Integer totalNumber, List<T> list) {
        this.totalNumber = totalNumber;
        this.list = list;
    }

    public PageSimpleVO(Integer totalNumber, List<T> list, Map<String, Object> map) {
        this.totalNumber = totalNumber;
        this.list = list;
        this.map = map;
    }
    public PageSimpleVO(Integer currentPage,Integer totalNumber, List<T> list) {
        this.currentPage =currentPage;
        this.totalNumber = totalNumber;
        this.list = list;
    }
}

//控制器

@GetMapping("/queryUser")
    public ResultVo queryUsertHDPage(@Valid UserVo user, @Valid EntyPage page) {
        Map<String, Object> map = new HashMap<>();
        map.put("user", user);
        map.put("page", page);
        List<User> users= userService.queryUsertHDPage(map);
        PageSimpleVO<User> userPage = new PageSimpleVO<>(page.getCurrentPage(),page.getTotalNumber(),users);
        return ResultVOUtils.success(userPage);
    }

//返回对象

@Data
public class ResultVo<T> {

    private Integer code;

    private String message;

    private T data;
}

//分页对应实体类

@Data
public class EntyPage implements java.io.Serializable {

    public EntyPage() {
    }

    public EntyPage(@NotNull(message = "请选择第几页") @Min(message = "分页参数错误", value = 1) int currentPage, @NotNull(message = "请填写每页查询数量") @Min(value = 1, message = "分页参数不能小于1") @Max(value = 50, message = "分页参数不能大于50") int pageSize) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
    }

    /**
     *
     */
    private static final long serialVersionUID = 1173808L;
    /**
     * 总条数
     */
    private int totalNumber;
    /**
     * 当前第几页
     */
    @NotNull(message = "请选择第几页")
    @Min(message = "分页参数错误", value = 1)
    private int currentPage;
    /**
     * 总页数
     */
    private int totalPage;
    /**
     * 每页显示条数
     */
    @NotNull(message = "请填写每页查询数量")
    @Min(value = 1, message = "分页参数不能小于1")
    @Max(value = 50, message = "分页参数不能大于50")
    private int pageSize = 10;
    /**
     * 数据库中limit的参数,从第几条开始取
     */
    private int dbOffset;
    /**
     * 数据库中limit的参数,一共取多少条
     */
    private int dbSize;
    /**
     * 有下一页
     */
    private Boolean hasNextPage;

    /**
     * 有上一页
     */
    private Boolean hasLastPage;
    /**
     * 下一页
     */
    private Integer nextPage;
    /**
     * 上一页
     */
    private Integer lastPage;

    // 该页是否有下一页.
    public Boolean getHasNextPage() {
        hasNextPage = currentPage < totalPage;
        return hasNextPage;
    }

    // 该页是否有上一页.
    public Boolean getHasLastPage() {
        hasLastPage = currentPage > 1;
        return hasLastPage;
    }

    // 获取上一页页数
    public int getLastPage() {
        if (getHasLastPage()) {
            lastPage = currentPage - 1;
        } else {
            lastPage = currentPage;
        }
        return lastPage;
    }

    public int getNextPage() {
        if (getHasNextPage()) {
            nextPage = currentPage + 1;
        } else {
            nextPage = currentPage;
        }
        return nextPage;
    }

    /**
     * 根据当前对象中属性值计算并设置相关属性值
     */

    public void count() {
        // 计算总页数
        int totalPageTemp = this.totalNumber / this.pageSize;
        int plus = (this.totalNumber % this.pageSize) == 0 ? 0 : 1;
        totalPageTemp = totalPageTemp + plus;
        if (totalPageTemp <= 0) {
            totalPageTemp = 1;
        }
        this.totalPage = totalPageTemp;

        // 当前页数小于1设置为1
        if (this.currentPage < 1) {
            this.currentPage = 1;
        }

        // 设置limit的参数
        this.dbOffset = (this.currentPage - 1) * this.pageSize;
        this.dbSize = this.pageSize;
    }

    public void setTotalNumber(int totalNumber) {
        this.totalNumber = totalNumber;
        this.count();
    }

}

/**

  • 返回结果的操作类
    */
public class ResultVOUtils {

    /**
     * 成功时返回	
     * @param data 返回的data对象
     * @return {@link ResultVo}
     */
    public static ResultVo success(Object data) {	
        ResultVo<Object> resultVO = new ResultVo<Object>();		
        resultVO.setCode(0);
        resultVO.setMessage("success");
        resultVO.setData(data);
        return resultVO;
    }


    /**
     * 成功时返回
     * @return {@link ResultVo}
     */
    public static ResultVo success() {
        Map data = new HashMap();
        return success(data);
    }

    /**
     * 错误时返回
     * @param code 错误码
     * @param message 错误信息
     * @return {@link ResultVo}
     */
    public static ResultVo error(Integer code, String message) {
        ResultVo<Object> resultVO = new ResultVo<>();
        resultVO.setCode(code);
        resultVO.setMessage(message);
        Map data = new HashMap();
        resultVO.setData(data);
        return resultVO;
    }
    public static ResultVo error(Integer code, String message,Object o) {
        ResultVo<Object> resultVO = new ResultVo<>();
        resultVO.setCode(code);
        resultVO.setMessage(message);
        Map data = new HashMap();
        resultVO.setData(o);
        return resultVO;
    }


    /**
     * 错误时返回
     * @param resultEnum 错误枚举类
     * @return {@link ResultVo}
     */
    public static ResultVo error(ResultEnum resultEnum) {
        return error(resultEnum.getCode(), resultEnum.getMessage());
    }

    /**
     * 错误时返回
     * @param resultEnum 错误枚举类
     * @param message 错误的信息
     * @return {@link ResultVo}
     */
    public static ResultVo error(ResultEnum resultEnum, String message) {
        return error(resultEnum.getCode(), message);
    }

}

更多推荐

java分页及返回数据封装实例