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条
测试当前第一页,每页显示1条