如果我们具有两个类A和B的两个对象a和b,
public class A{
String prop1;
String prop2;
String prop3;
String prop4;
public A(String prop1, String prop2, String prop3, String prop4) {
this.prop1 = prop1;
this.prop2 = prop2;
this.prop3 = prop3;
this.prop4 = prop4;
}
public A() {
}
//... setters and getters
}
public class B{
String prop2;
String prop3;
public B(String prop2, String prop3) {
this.prop1 = prop1;
this.prop2 = prop2;
this.prop3 = prop3;
this.prop4 = prop4;
}
public B() {
}
}
A a = new A("prop1","prop2","prop3","prop4");
B b = new B();
b.setProp3("p");
我们如何将非空属性从B复制到a?在上面的例子中,我们如何复制不为空的prop3并忽略为空的prop2。
2条答案
按热度按时间mf98qq941#
您可以使用MapStruct。
这是一个非常容易使用的库,你可以把所有的属性从一个类复制到另一个类。
当需要将属性从DTO复制到实体时,这非常有用。
如果您不想创建新对象,而是想更新现有对象,也可以按如下所示操作:MapStruct: How to map to existing target?
更多的例子在这里:https://www.baeldung.com/mapstruct
iyzzxitl2#
可以使用反射或BeanUtils这样的库来实现这一点,但也可以考虑使用KISS原则,只为它编写一个简单的方法:
使用BeanUtils,您可以扩展BeanUtilsBean以覆盖
copyProperty
并检查值是否为空,然后像这样使用它:有关更多信息,请查看此答案https://stackoverflow.com/a/3521314/11480721: