分页类

import lombok.Data;

import java.io.Serializable;

@Data
public class PageResponse implements Serializable {
    private static final long serialVersionUID = -5933148973661946268L;
    /**
     * 当前页
     */
    private int pageNum;
    /**
     * 每页的数量
     */
    private int pageSize;
    /**
     * 当前页的数量
     */
    private int size;

    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"

    /**
     * 当前页面第一个元素在数据库中的行号
     */
    private int startRow;
    /**
     * 当前页面最后一个元素在数据库中的行号
     */
    private int endRow;
    /**
     * 总页数
     */
    private int pages;
    /**
     * 总共条数
     */
    private long total;

    /**
     * 前一页
     */
    private int prePage;
    /**
     * 下一页
     */
    private int nextPage;

    /**
     * 是否为第一页
     */
    private boolean isFirstPage = false;
    /**
     * 是否为最后一页
     */
    private boolean isLastPage = false;
    /**
     * 是否有前一页
     */
    private boolean hasPreviousPage = false;
    /**
     * 是否有下一页
     */
    private boolean hasNextPage = false;
    /**
     * 导航页码数
     */
    private int navigatePages;
    /**
     * 所有导航页号
     */
    private int[] navigatepageNums;
    /**
     * 导航条上的第一页
     */
    private int navigateFirstPage;
    /**
     * 导航条上的最后一页
     */
    private int navigateLastPage;

}

返回类

package com.yixiu.crm.common.util;

/**
 * @auther: shaoshuaui.zheng
 * @description:
 * @date: 2019/1/2 17:47
 */

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.yixiu.crm.model.response.PageResponse;

import java.io.Serializable;

/**
 * 保证序列化json的时候,如果是null的对象,key也会消失
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public final class ServerResponse<T> implements Serializable {

    private int status;
    private String nextPage;
    private String msg;
    private T data;
    /**
     * 分页信息
     */
    private PageResponse pageInfo;

    /**
     * 状态码
     *
     * @param status
     */
    private ServerResponse(int status) {
        this.status = status;
        this.msg = "加载成功!";
    }

    /**
     * 状态码 + 数据
     *
     * @param status
     * @param data
     */
    private ServerResponse(int status, T data) {
        this.status = status;
        this.data = data;
        this.msg = "加载成功!";
    }

    /**
     * 状态码 + 数据 + 分页
     *
     * @param status
     * @param data
     */
    private ServerResponse(int status, T data, String nextPage) {
        this.status = status;
        this.data = data;
        this.nextPage = nextPage;
        this.msg = "加载成功!";
    }

    public ServerResponse(int status, T data, PageResponse pageInfo) {
        this.status = status;
        this.data = data;
        this.pageInfo = pageInfo;
        this.msg = "加载成功!";
    }

    /**
     * 状态码 + 消息 + 数据
     *
     * @param status
     * @param msg
     * @param data
     */
    private ServerResponse(int status, String msg, T data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 状态码 + 消息
     *
     * @param status
     * @param msg
     */
    private ServerResponse(int status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    /**
     * 使之不在json序列化结果当中
     *
     * @return
     */
    public boolean isSuccess() {
        return this.status == ResponseCode.SUCCESS.getCode();
    }

    public int getStatus() {
        return status;
    }

    public String getNextPage() {
        return nextPage;
    }

    public void setNextPage(String nextPage) {
        this.nextPage = nextPage;
    }

    public T getData() {
        return data;
    }

    public String getMsg() {
        return msg;
    }

    public PageResponse getPageInfo() {
        return pageInfo;
    }

    public void setPageInfo(PageResponse pageInfo) {
        this.pageInfo = pageInfo;
    }

    /**
     * 返回成功-无参数
     *
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccess() {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());
    }


    /**
     * 返回成功-消息
     *
     * @param msg
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccessMessage(String msg) {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(), msg);
    }

    /**
     * 返回成功-数据
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccess(T data) {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(), data);
    }

    /**
     * 返回成功-数据 + 分页
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccess(T data, String nextPage) {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(), data, nextPage);
    }

    /**
     * 返回成功-数据 + 分页
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccess(T data, PageResponse pageInfo) {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(), data, pageInfo);
    }

    /**
     * 返回成功-消息 + 数据
     *
     * @param msg
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createBySuccess(String msg, T data) {
        return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(), msg, data);
    }


    /**
     * 返回错误-无参数
     *
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createByError() {
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(), ResponseCode.ERROR.getDesc());
    }

    /**
     * 返回异常-无参数
     *
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createByException() {
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(), ResponseCode.ERROR.getDesc());
    }


    /**
     * 返回错误-消息
     *
     * @param errorMessage
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createByErrorMessage(String errorMessage) {
        return new ServerResponse<T>(ResponseCode.ERROR.getCode(), errorMessage);
    }

    /**
     * 返回错误-错误码 + 消息
     *
     * @param errorCode
     * @param errorMessage
     * @param <T>
     * @return
     */
    public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode, String errorMessage) {
        return new ServerResponse<T>(errorCode, errorMessage);
    }

    @Override
    public String toString() {
        return JSONObject.toJSONString(this);
    }
}

状态类

package com.yixiu.crm.common.util;

/**
 * @auther: shaoshuaui.zheng
 * @description:
 * @date: 2019/1/2 17:48
 */
public enum ResponseCode {

    /**
     * 0 成功
     * 1 异常
     * 2 错误
     */
    SUCCESS(0, "SUCCESS"),
    EXCEPTION(1, "EXCEPTION"),
    ERROR(2, "ERROR");

    private final int code;
    private final String desc;


    ResponseCode(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

}