大约有6个POJO类(域实体,DTO,DMO)都有几乎相同的字段。要从一个objec转换到另一个objec,我传递一个对象并调用它的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);
我需要帮助。当我在参数中传递对象时,我需要一种方法。有没有更好的方法来实现这个目标?
答案 0 :(得分:2)
您可以尝试使用框架。过去我曾用Dozer来做这件事。
在以下文章中,还提到了其他框架 any tool for java object to object mapping?
(一些建议:在映射JPA实体对象时,注意框架自动映射的惰性字段)
也许您不希望/不能使用单独的框架无论出于何种原因。 由于您似乎有严格的分层,因此您可能会为每个图层设置映射器。然后我会为每个对象单独映射。通过这种方式,您可以轻松地计算出从用户名到userId等的映射。层中所有对象的方法名称完全相同的可能性并不高,并且可能无论如何都会发生变化。
答案 1 :(得分:0)
使用Spring的BeanUtils结束。
BeanUtils.copyProperties(Object source, Object target)