gpt4 book ai didi

java - 通用 - 调用传入参数的对象的实际方法

转载 作者:行者123 更新时间:2023-11-30 02:34:12 27 4
gpt4 key购买 nike

大约有 6 个 POJO 类(域实体、DTO、DMO)都具有几乎相同的字段。为了从一个对象转换为另一个对象,我传递一个对象并调用它的 getter 将其设置到另一个对象中。

private UserTemp convertDmoToUserTempEntity(final UserDmo userDmo) {
final UserTemp userTemp = new UserTemp();
userTemp.setUsername(userDmo.getUsername());
userTemp.setPassword(userDmo.getPassword());
userTemp.setStatus(userDmo.getStatus());
return userTemp;
}

private UserDmo convertEntityToUserDmo(final UserTemp userTemp) {
final UserDmo userDmo = new UserDmo();
userDmo.setUserId(userTemp.getUserId());
userDmo.setUsername(userTemp.getUsername());
userDmo.setStatus(userTemp.getStatus());
return userDmo;
}

有很多这样的转换,例如从一个实体到另一个实体、DTO 到 DMO、DMO 到 DTO 等。我相信处理此问题的更好方法是泛型,传递源对象和目标对象。

public static <E, T> T convert(E e, T t) {
//call getter of source object to set it in destination object.
return t;
}

UserConverterImpl.convertFromTempToUser(userTemp, user);

我需要这方面的帮助。当我在参数中传递对象时,我需要一种方法。有没有更好的方法来实现这个目标?

最佳答案

您可以尝试使用框架来实现此目的。过去我曾使用 Dozer 来执行此操作。

在下一篇文章中,还提到了其他框架 any tool for java object to object mapping? .

(一些建议:映射 JPA 实体对象时,请注意框架自动映射的惰性字段)

也许您出于某种原因不想/不能使用单独的框架。由于您似乎有严格的分层,因此您可能会为每一层都有映射器。然后我会为每个对象进行单独的映射。通过这种方式,您可以轻松地计算出从用户名到 userId 等的映射。各层中的所有对象的方法名称完全相同的可能性并不高,而且很可能会发生变化。

关于java - 通用 - 调用传入参数的对象的实际方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com