1. 基础类
public class BaseDTO implements Serializable {
private static final long serialVersionUID = 6834904326840816382L;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
2. 返回值对象
2.1 单个返回值
@Data
public class SingleResultDTO<T> extends BaseDTO {
private static final long serialVersionUID = 9152707026471809485L;
private Boolean success;
private T result;
private String errorCode;
private String errorMessage;
private String extErrorMessage;
private Throwable throwable;
public static <T> SingleResultDTO<T> successResult(T data) {
SingleResultDTO<T> result = new SingleResultDTO<T>();
result.success(data);
return result;
}
public static <T> SingleResultDTO<T> failResult(String errorCode, String errorMessage, String extErrorMessage) {
SingleResultDTO<T> result = new SingleResultDTO<T>();
result.error(errorCode, errorMessage, extErrorMessage);
return result;
}
public static <T> SingleResultDTO<T> failResult(String errorCode, String errorMessage) {
SingleResultDTO<T> result = new SingleResultDTO<T>();
result.error(errorCode, errorMessage);
return result;
}
protected void success(T data) {
setResult(data);
setSuccess(true);
}
protected void error(String errorCode, String errorMessage, String extErrorMessage) {
error(errorCode, errorMessage);
setExtErrorMessage(extErrorMessage);
}
protected void error(String errorCode, String errorMessage) {
setErrorCode(errorCode);
setErrorMessage(errorMessage);
setSuccess(false);
}
}
2.2 多个返回值
@Data
public class BatchResultDTO<T> extends SingleResultDTO<List<T>> {
private static final long serialVersionUID = 4908634527589261759L;
public static <T> BatchResultDTO<T> successBatchResult(List<T> data) {
BatchResultDTO<T> result = new BatchResultDTO<>();
result.success(data);
return result;
}
public static <T> BatchResultDTO<T> failBatchResult(String errorCode, String errorMessage, String extErrorMessage) {
BatchResultDTO<T> result = new BatchResultDTO<>();
result.error(errorCode, errorMessage, extErrorMessage);
return result;
}
}
2.3 多个返回值-简化版
@Data
public class BatchResultDTO<T> extends BaseDTO {
private static final long serialVersionUID = 8018937656407814384L;
private Boolean success;
private List<T> result;
public static <T> BatchResultDTO<T> successResult(List<T> data) {
BatchResultDTO<T> result = new BatchResultDTO<>();
result.success(data);
return result;
}
protected void success(List<T> data) {
setResult(data);
setSuccess(true);
}
}
3. 使用
3.1 接口
public interface OrderService {
SingleResultDTO<OrderDTO> queryOrderByCode(String orderCode);
BatchResultDTO<OrderDTO> queryOrdersByTradeId(String tradeId);
}
@Service
public class OrderServiceImpl implements OrderService {
@Override
public SingleResultDTO<OrderDTO> queryOrderByCode(String orderCode) {
try {
OrderDTO orderDTO = new OrderDTO("1001", "2020");
// do something
return SingleResultDTO.successResult(orderDTO);
} catch (RuntimeException e) {
return SingleResultDTO.failResult("errorCode", "errorMessage");
} catch (Throwable t) {
throw new RuntimeException("errorMessage", t);
}
}
@Override
public BatchResultDTO<OrderDTO> queryOrdersByTradeId(String tradeId) {
try {
List<OrderDTO> orders = Arrays.asList(new OrderDTO("1001", "2020"),
new OrderDTO("1002", "2021"));
// do something
return BatchResultDTO.successBatchResult(orders);
} catch (RuntimeException e) {
return BatchResultDTO.failBatchResult("errorCode", "errorMessage", "extErrorMessage");
} catch (Throwable t) {
throw new RuntimeException("errorMessage", t);
}
}
}
3.2 返回结果
单个返回值
{
"result": {
"orderCode": "1001",
"tradeId": "2020"
},
"success": true
}
多个返回值
{
"result": [
{
"orderCode": "1001",
"tradeId": "2020"
},
{
"orderCode": "1002",
"tradeId": "2021"
}
],
"success": true
}
网友评论