领域模型命名规约:
数据对象:xxxPo,xxx即为数据表名, 对象属性和表字段对应;
数据传输对象:xxxDto,xxx为业务领域相关的名称,前端向后端传递对象,GRPC,及其他数据对象传输统一使用Dto后缀;
展示对象:xxxVo,xxx一般为view名称;
业务处理对象:xxxBo,xxx为业务领域相关的名称.
注:需要实体类中的字段完全一致才能互转
package com.xxx.util;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public final class ClazzConverter {
private ClazzConverter() {
}
//两个实体类互转
public static <T1, T2> T1 converterClass(final T2 srcClazz, Class<T1> dstClazz) {
String str = JSON.toJSONString(srcClazz);
return str != null && !str.trim().equals("") ? JSON.parseObject(str.trim(), dstClazz) : null;
}
//转List
public static <T1, T2> List<T1> converterClass(final List<T2> srcList, Class<T1> dstClazz) {
List<T1> list = new ArrayList();
if (srcList != null && !srcList.isEmpty()) {
String str = JSON.toJSONString(srcList);
if (str != null && !str.trim().equals("")) {
List<T1> list = JSON.parseArray(str.trim(), dstClazz);
return (List)(list == null ? new ArrayList() : list);
} else {
return list;
}
} else {
return list;
}
}
public static <T1, T2> Collection<T1> converterClass(final Collection<T2> srcList, Class<T1> dstClazz) {
List<T1> list = new ArrayList();
if (srcList != null && !srcList.isEmpty()) {
String str = JSON.toJSONString(srcList);
if (str != null && !str.trim().equals("")) {
Collection<T1> c = JSON.parseArray(str.trim(), dstClazz);
return (Collection)(c == null ? list : c);
} else {
return list;
}
} else {
return list;
}
}
}
例如:
1.两个实体类互转
UserDTO userDTO = ClazzConverter.converterClass(userPO,UserDTO.class);
2.List<UserPO>转为List<UserDTO>
List<UserDTO> userDTOList = (List<UserDTO>)ClazzConverter.converterClass(userPOList,UserDTO.class);