1、Result类作为数据传输对象,这个对象是DTO
import com.google.gson.Gson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@ApiModel("响应对象")
public class Result<T> implements Serializable {
private static final long serialVersionUID = -8614669828681890797L;
public static final int SUCCESS = 1;
public static final int FAIL = 0;
@ApiModelProperty(
value = "结果码",
dataType = "Integer",
required = true
)
private int status;
@ApiModelProperty(
value = "结果描述",
dataType = "String",
required = true
)
private String message;
@ApiModelProperty("响应数据对象")
private T data;
public Result() {
}
public Result(int status, String message) {
this.status = status;
this.message = message;
this.data = null;
}
public Result(T data) {
this.status = 1;
this.message = "SUCCESS";
this.data = data;
}
public Result(int status, T data, String message) {
this.status = status;
this.data = data;
this.message = message;
}
@Override
public String toString() {
Gson gson = new Gson();
return gson.toJson(this);
}
public static <T> Result<T> custom(int status, T t, String message) {
return new Result(status, t, message);
}
public static <T> Result<T> custom(int status, String message) {
return new Result(status, message);
}
public static <T> Result<T> success(T t, String message) {
return new Result(1, t, message);
}
public static <T> Result<T> success(String message) {
return new Result(1, message);
}
public static <T> Result<T> fail(T t, String message) {
return new Result(0, t, message);
}
public static <T> Result<T> fail(String message) {
return new Result(0, message);
}
public static Result<String> success() {
return new Result(1, "OK");
}
public static Result<String> fail() {
return new Result(0, "FAIL");
}
public int getStatus() {
return this.status;
}
public String getMessage() {
return this.message;
}
public T getData() {
return this.data;
}
public void setStatus(int status) {
this.status = status;
}
public void setMessage(String message) {
this.message = message;
}
public void setData(T data) {
this.data = data;
}
}
注释:这个属于一种工具类,目的是方便以后的复用(基本所有的DO对象都可以通多DTO转化为VO),可以统一返回值的类型,里面可以封装一些东西,T是通用的泛型,里面可以装各种各样的对象。
2、使用实例:
@Override
public Result selectAreaListById(String id) {
if (null == id || "".equals(id.trim())){
id = "0" ;
}
List<AreaInfo> areaInfos = areaDao.selectAreaListById(id) ;
if (null != areaInfos && areaInfos.size()>0){
List<AreaInfoDTO> areaInfoDTOList= AreaInfoConvert.INSTANCE.doList2DtoList(areaInfos) ;
return Result.success(areaInfoDTOList,"查询成功") ;
}
return Result.fail("数据为空,查询失败");
}
注释:因为是DTO,数据流传输对象,所以使用的场景是service层中的,传递出来的data会被转到VO实体类中去,显示在前端。
如果项目小使用会比较麻烦,但是如果项目比较大,也是很有好处的。
3、DO通过convert这个接口类,转化为DTO
package com.chaoxing.user.convert;
import com.user.beans.DO.AreaInfo;
import com.user.beans.DO.UserInfo;
import com.user.beans.DTO.AreaInfoDTO;
import com.user.beans.VO.RegisterVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface AreaInfoConvert {
AreaInfoConvert INSTANCE = Mappers.getMapper(AreaInfoConvert.class);
AreaInfoDTO do2Dto(AreaInfo areaInfo) ;
List<AreaInfoDTO> doList2DtoList(List<AreaInfo> areaInfos);
}
注释:DO是数据库对象,DTO是数据传输对象,VO前端返回对象。