72 lines
1.8 KiB
Java
72 lines
1.8 KiB
Java
package com.youlai.boot.common.result;
|
||
|
||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||
import lombok.Data;
|
||
|
||
import java.io.Serializable;
|
||
import java.util.Collections;
|
||
import java.util.List;
|
||
|
||
/**
|
||
* 分页响应结构体
|
||
*
|
||
* @author Ray.Hao
|
||
* @since 2022/2/18
|
||
*/
|
||
@Data
|
||
public class PageResult<T> implements Serializable {
|
||
|
||
private String code;
|
||
|
||
private String msg;
|
||
|
||
private PageData<T> data;
|
||
|
||
/**
|
||
* 构建分页结果(MyBatis-Plus {@link IPage})。
|
||
*
|
||
* <p>data 为当前页记录列表;page 提供分页元信息。</p>
|
||
*/
|
||
public static <T> PageResult<T> success(IPage<T> page) {
|
||
PageResult<T> result = new PageResult<>();
|
||
result.setCode(ResultCode.SUCCESS.getCode());
|
||
result.setMsg(ResultCode.SUCCESS.getMsg());
|
||
|
||
List<T> records =
|
||
(page == null || page.getRecords() == null)
|
||
? Collections.emptyList()
|
||
: page.getRecords();
|
||
PageData<T> pageData = new PageData<>();
|
||
pageData.setList(records);
|
||
pageData.setTotal(page != null ? page.getTotal() : 0L);
|
||
result.setData(pageData);
|
||
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* 构建列表结果(无分页)。
|
||
*
|
||
* <p>page 置为 null,用于与分页返回区分。</p>
|
||
*/
|
||
public static <T> PageResult<T> success(List<T> list) {
|
||
PageResult<T> result = new PageResult<>();
|
||
result.setCode(ResultCode.SUCCESS.getCode());
|
||
result.setMsg(ResultCode.SUCCESS.getMsg());
|
||
PageData<T> pageData = new PageData<>();
|
||
pageData.setList(list != null ? list : Collections.emptyList());
|
||
pageData.setTotal(0L);
|
||
result.setData(pageData);
|
||
return result;
|
||
}
|
||
|
||
@Data
|
||
public static class PageData<T> {
|
||
|
||
private List<T> list;
|
||
|
||
private long total;
|
||
}
|
||
|
||
}
|