Добрый день,
Мне нужно какой-то способ для обновления всех полей (за исключением id) Dto объекта, полученного из базы, полями объекта такого же типа пришедшими из вне.
Применить условие обновления — пришедшие извне поля не равны null. Полей много.
Способ ниже как то громоздок и некрасив.
import static java.util.Objects.isNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Collection;
public class UpdateData {
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
class DtoClass {
private String id;
private String field01;
private String field02;
...
private String field99;
}
private <T> T updateByNotNullSrc(T g1, T g2){
return !isNull(g2) ? g2 : g1;
}
public void insertOrUpdateDtoClass(Collection<DtoClass> dtoClasses) {
for (DtoClass dtoClass: dtoClasses) {
DtoClass dbDtoClass = getByIdFromDB(dtoClass.getId());
if (isNull(dbDtoClass)) {
dao.insert(mapper.toJooq(dbDtoClass));
} else {
DtoClass updatedDtoClass = DtoClass.builder()
.field01(updateByNotNullSrc(dbDtoClass.getField01(), dtoClass.getField01()))
.field02(updateByNotNullSrc(dbDtoClass.getField02(), dtoClass.getField02()))
...
.field99(updateByNotNullSrc(dbDtoClass.getField99(), dtoClass.getField99()))
.build();
dao.update(mapper.toJooq(updatedDtoClass));
}
}
}
}
Предложите пожалуйста какой-нибудь элегантный способ.
В приложении используется java8 и бибилиотеки Spring, org.mapstruct, Jooq.