java封装分页查询返回类及分页查询方法总结

1.引入pom
 

<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.1</version>
</dependency>

2.编写返回类

2.1 接口定义

public interface AppState {
    int getState();

    String getMessage();
}

2.2 返回状态码


public enum ResultStateEnum implements AppState {
    RESOURCE_NOT_FOUND(404, "资源不存在"),
    SUCCESS(1, "ok"),
    FAIL(0, "系统压力山大,请稍后再试!"),
    ERROR(-1, "error");

    private int state;
    private String message;

    private ResultStateEnum(int state, String message) {
        this.state = state;
        this.message = message;
    }

    public int getState() {
        return this.state;
    }

    public String getMessage() {
        return this.message;
    }
}

2.3 返回类定义


import com.alibaba.fastjson.annotation.JSONField;
import java.io.Serializable;

public class Result<T> implements Serializable {
    @JSONField(
            name = "State"
    )
    private int state;
    @JSONField(
            name = "Msg"
    )
    private String msg;
    @JSONField(
            name = "Body"
    )
    private T body;
    @JSONField(
            name = "Total"
    )
    private Long total;
    @JSONField(
            name = "Code"
    )
    private int code;
    @JSONField(
            name = "Success"
    )
    private Boolean success;
    @JSONField(
            name = "IsSuccess"
    )
    private Boolean IsSuccess;
    @JSONField(
            name = "IsCircuteBreaker"
    )
    private Boolean IsCircuteBreaker;
    @JSONField(
            name = "IsTimeout"
    )
    private Boolean IsTimeout;

    public Result() {
        this(ResultStateEnum.FAIL);
    }

    public Result(int state, String message) {
        this.IsSuccess = true;
        this.IsCircuteBreaker = false;
        this.IsTimeout = false;
        this.state = state;
        this.msg = message;
        this.total = 0L;
    }

    public Result(int state, String message, T body) {
        this.IsSuccess = true;
        this.IsCircuteBreaker = false;
        this.IsTimeout = false;
        this.state = state;
        this.msg = message;
        this.body = body;
        this.total = 0L;
    }

    public Result(AppState appState) {
        this.IsSuccess = true;
        this.IsCircuteBreaker = false;
        this.IsTimeout = false;
        this.state = appState.getState();
        this.msg = appState.getMessage();
        this.total = 0L;
        this.code = this.state;
    }

    public Result(AppState appState, T body) {
        this.IsSuccess = true;
        this.IsCircuteBreaker = false;
        this.IsTimeout = false;
        this.state = appState.getState();
        this.msg = appState.getMessage();
        this.body = body;
        this.total = 0L;
    }

    public Result(int state, String msg, T body, Long total) {
        this.IsSuccess = true;
        this.IsCircuteBreaker = false;
        this.IsTimeout = false;
        this.state = state;
        this.msg = msg;
        this.body = body;
        this.total = total;
    }

    public static Result<String> fail(String msg) {
        return fail(ResultStateEnum.FAIL.getState(), msg);
    }

    public static Result<String> error(String msg) {
        return fail(ResultStateEnum.ERROR.getState(), msg);
    }

    public static Result<String> fail(int state, String msg) {
        return new Result(state, msg);
    }

    public static Result<String> success(String msg) {
        return success(msg, (Object) null);
    }

    public static Result success(String msg, Object body) {
        return new Result(ResultStateEnum.SUCCESS.getState(), msg, body);
    }

    public void ok() {
        this.state = ResultStateEnum.SUCCESS.getState();
        this.msg = ResultStateEnum.SUCCESS.getMessage();
    }

    public int getState() {
        return this.state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getMsg() {
        return this.msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getBody() {
        return this.body;
    }

    public void setBody(T body) {
        this.body = body;
    }

    public Long getTotal() {
        return this.total;
    }

    public int getCode() {
        return this.state;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

    public Boolean getCircuteBreaker() {
        return this.IsCircuteBreaker;
    }

    public void setCircuteBreaker(Boolean circuteBreaker) {
        this.IsCircuteBreaker = circuteBreaker;
    }

    public Boolean getTimeout() {
        return this.IsTimeout;
    }

    public void setTimeout(Boolean timeout) {
        this.IsTimeout = timeout;
    }

    public Boolean getSuccess() {
        return this.state == 1 ? true : false;
    }

    public String toString() {
        return "Result{state=" + this.state + ", msg='" + this.msg + '\'' + ", body=" + this.body + ", total=" + this.total + '}';
    }
}

2.4 定义页码和每页显示多少条

import lombok.Data;

@Data
public class BasePageParam {
    /**
     * 页码
     */
    private Integer pageNum = 1;

    /**
     * 页大小
     */

    private Integer pageSize = 10;

}

3.编写util类

import com.github.pagehelper.PageHelper;
import com.zsp.quartz.result.BasePageParam;
import lombok.extern.slf4j.Slf4j;


@Slf4j
public class PageUtil {
    public static void startPage(BasePageParam basePageParam) {
        Integer pageNum = basePageParam.getPageNum();
        Integer pageSize = basePageParam.getPageSize();
        if (pageNum != null && pageSize != null) {
            PageHelper.startPage(pageNum, pageSize);
        }
    }
}

以下就开始使用

4.编写入参Param

import com.zsp.quartz.result.BasePageParam;
import lombok.Data;

import java.io.Serializable;
@Data
public class UserPageListParam extends BasePageParam implements Serializable {

    /**
     * 姓名
     */
    private String name;

}

5.编写出参VO


import com.zsp.quartz.entity.User;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.BeanUtils;

@Getter
@Setter
public class UserPageVO {

    public UserPageVO(User user){
        BeanUtils.copyProperties(user, this);
    }
    /**
     * 主键
     */
    private Long id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 密码
     */
    private String pwd;
    /**
     * 等级
     */
    private String level;
    /**
     * 电话
     */
    private String phone;
    /**
     * 邮箱
     */
    private String email;
}

6.编写controller


   /**
     * 用户分页列表
     * @param pageListParam
     * @return
     */
    @GetMapping(value = "/pageList")
    public Result<List<UserPageVO>> pageList(@Validated UserPageListParam pageListParam){
        Page<User> page = this.userService.pageList(pageListParam);
        List<UserPageVO> voList = page.stream().map(UserPageVO::new).collect(Collectors.toList());
        return new Result(1, "获取成功", voList, page.getTotal());
    }

7.编写pageList方法

/**
     * 用户分页列表
     * @param pageListParam
     * @return
     */
    Page<User> pageList(UserPageListParam pageListParam);

8.pageList实现类

  /**
     * 用户分页列表
     * @param pageListParam
     * @return
     */
    @GetMapping(value = "/pageList")
    public Result<List<UserPageVO>> pageList(@Validated UserPageListParam pageListParam){
        Page<User> page = this.userService.pageList(pageListParam);
        List<UserPageVO> voList = page.stream().map(UserPageVO::new).collect(Collectors.toList());
        return new Result(1, "获取成功", voList, page.getTotal());
    }

Postman测试

测试当前第一页,每页显示2条

6e0c577c7d9d4089bbaf1c44756e49e1.png

 

测试当前第一页,每页显示1条

49661d0d036f4501afbfb1a347d962be.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值