VO,PO,DTO实体类的用法及互转工具类

时间:2025-04-11 22:20:50

领域模型命名规约:
数据对象:xxxPo,xxx即为数据表名, 对象属性和表字段对应;
数据传输对象:xxxDto,xxx为业务领域相关的名称,前端向后端传递对象,GRPC,及其他数据对象传输统一使用Dto后缀;
展示对象:xxxVo,xxx一般为view名称;
业务处理对象:xxxBo,xxx为业务领域相关的名称.

 注:需要实体类中的字段完全一致才能互转

package ;

import ;
import ;
import ;
import ;

public final class ClazzConverter {
    private ClazzConverter() {
    }

    //两个实体类互转
    public static <T1, T2> T1 converterClass(final T2 srcClazz, Class<T1> dstClazz) {
        String str = (srcClazz);
        return str != null && !().equals("") ? ((), 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 && !()) {
            String str = (srcList);
            if (str != null && !().equals("")) {
                List<T1> list = ((), 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 && !()) {
            String str = (srcList);
            if (str != null && !().equals("")) {
                Collection<T1> c = ((), dstClazz);
                return (Collection)(c == null ? list : c);
            } else {
                return list;
            }
        } else {
            return list;
        }
    }

}

例如:

1.两个实体类互转

UserDTO userDTO = (userPO,);

<UserPO>转为List<UserDTO>

List<UserDTO> userDTOList = (List<UserDTO>)(userPOList,);