Java:比较两个具有大约10个或更多属性的对象
从com.ow.vo.computer.applicationSage中的RestUI获取数据 从数据库获取数据 比较下面给出的每个内容Java:比较两个具有大约10个或更多属性的对象,java,design-patterns,compare,comparison,mapper,Java,Design Patterns,Compare,Comparison,Mapper,从com.ow.vo.computer.applicationSage中的RestUI获取数据 从数据库获取数据 比较下面给出的每个内容 public void compare(com.ow.vo.computer.ApplicationUsage src, ApplicationUsage dest) { if(!Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())) {
public void compare(com.ow.vo.computer.ApplicationUsage src, ApplicationUsage dest) {
if(!Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())) {
dest.setApplicationItenCost(src.getApplicationItemCost);
}
if(!Objects.equals(src.getAvgUsageTime(), dest.getAvgUsageTime())) {
}
if(!Objects.equals(src.getBundleApplicationId(), dest.getBundleApplicationId())) {
}
if(!Objects.equals(src.getBundleApplicationName(), dest.getBundleApplicationName())) {
}
if(!Objects.equals(src.getDiscoveredDate(), dest.getDiscoveredDate())) {
}
.
.
.
若有任何更新,则只将其更新到数据库中,否则不更新
src和dest的结构几乎相同,但日期类型不同,如Source have String和dest have date
有谁能建议更优雅的方式或设计模式来处理这种情况,而不是逐个比较每个领域
业务逻辑:(从数据库中加载区块以获得100条记录,点击rest api以获得100条记录。将每条记录1乘以1进行比较(该1中的所有属性)。如果没有差异,则什么也不做。如果差异合并它,如果新创建记录,如果rest api中不存在,则也从数据库中删除。)难道你不能将
src
映射到你的dest
类型,然后应用一个简单的合并策略吗?难道你不能定义一个包含所有常用方法/字段的接口或抽象类吗?既然setter是一个单一的快速操作,为什么还要费心进行比较呢?只需为每个属性调用dest.setX(src.getX())
,而不管目标属性是否已经具有相同的值。@Lino:如果没有差异,那么我们需要忽略它record@Michael:如果没有差异,那么我们不会像我说的那样插入任何更改,然后更新到数据库,否则不会。所以,如果我直接设置,我如何检查是否要保留、创建新的或删除任何现有的。