转换对象只是看待每个人不同的写法,有些人喜欢用实体类,有些人喜欢用DTO类,也有些人喜欢用VO类,看个人喜欢,不过我比较喜欢用DTO做传输数据

先上工具类

/**
 * 对象转换
 * 东泰 http://dt2008.cn
 * 2020-11
 */
public class BeanHelper {

    public static <T> T copyProperties(Object source, Class<T> target){
        try {
            T t = target.newInstance();
            BeanUtils.copyProperties(source, t);
            return t;
        } catch (Exception e) {
            System.out.println("【数据转换】数据转换出错,目标对象{}构造函数异常:"+target.getName()+","+ e);
            return null;
        }
    }

    public static <T> List<T> copyWithCollection(List<?> sourceList, Class<T> target){
        try {
            return sourceList.stream().map(s -> copyProperties(s, target)).collect(Collectors.toList());
        } catch (Exception e) {
            System.out.println("【数据转换】数据转换出错,目标对象{}构造函数异常:"+target.getName()+","+ e);
            return null;
        }

    }

    public static <T> Set<T> copyWithCollection(Set<?> sourceList, Class<T> target){
        try {
            return sourceList.stream().map(s -> copyProperties(s, target)).collect(Collectors.toSet());
        } catch (Exception e) {
            System.out.println("【数据转换】数据转换出错,目标对象{}构造函数异常:"+target.getName()+","+ e);
            return null;
        }
    }
}

用法: 先准备实体类,然后采用DTO形式

User对象类

@Data
public class User {

    private Integer userId;         //用户id

    private String userName;        //账号

    private String password;        //密码

}

UserDTO对象类

@Data
public class UserDTO {

    private Integer userId;         //用户id

    private String userName;        //账号

    private String password;        //密码
    
    private UserInfo userInfo;		//用户基本信息

}

很显然UserDTO需要引入其他信息,这时可以通过对象转换形式去做

service层

//获取用户信息
public UserDTO getUserById(Integer userId) {
        User user = UserMapper.getUserById(userId);
        //对象转换
        UserDTO userDTO = BeanHelper.copyProperties(user, UserDTO.class);
        //查询写入 userInfo .....
        return userDTO;
}

 

这个对象转换可以这样使用,里面也有list类型转换,但是这个是偏向于个人写法,有些人用DTO,也有些人直接在对象写入其他对象,都可以的。

上面service层的写法只是告诉大家使用方法

 

最后修改于 2021-12-24 15:53:29
上一篇