package com.toolconclusion.transition;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Author: Sun
* @DateTime: 2025/4/1 10:53
* @Description: 实体和dto转换工具
**/
public class EntityConverter {
public static <E, D> D entity2DTO(E entity, Class<D> dtoClass) {
return convertBean(entity, dtoClass);
}
private static <B1, B2> B2 convertBean(B1 b1, Class<B2> b2Class) {
B2 b2 = null;
if (b1 == null) {
return null;
}
try {
b2 = b2Class.newInstance();
BeanUtils.copyProperties(b1, b2);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
return b2;
}
public static <E, D> List<D> entity2DTO(List<E> entityList, Class<D> dtoClass) {
Stream<E> stream = entityList.stream();
return stream.map(e->entity2DTO(e,dtoClass)).collect(Collectors.toList());
}
}
使用:
实体类:
public class User {
private Long id;
private String name;
private String email;
// 构造方法、getter和setter省略
}
DTO
public class UserDTO {
private Long id;
private String name;
private String email;
// 构造方法、getter和setter省略
}
public class Main {
public static void main(String[] args) {
// 单个对象转换
User user = new User(1L, "张三", "zhangsan@example.com");
UserDTO userDTO = EntityConverter.entity2DTO(user, UserDTO.class);
System.out.println("单个转换结果: " + userDTO);
// DTO转单个实体
UserDTO userDTO = new UserDTO(1L, "张三", "zhangsan@example.com");
User user = EntityConverter.entity2DTO(userDTO, User.class);
System.out.println("DTO转实体结果: " + user);
// 集合对象转换
List<User> users = Arrays.asList(
new User(1L, "张三", "zhangsan@example.com"),
new User(2L, "李四", "lisi@example.com")
);
List<UserDTO> userDTOs = EntityConverter.entity2DTO(users, UserDTO.class);
System.out.println("集合转换结果: " + userDTOs);
}
}