判断一个对象属性值是否全部为 null 或 “”
所维护的项目中有个需求,要求对象A中有任何一个字段被维护就新增, 否则不做处理或更新。由于对象A的一部分属性是由传入的对象B进行赋值的,字段值可能为"",其他未赋值的字段为null。
// 根据id判断 新增或修改
if (null == b.getOp20Id()) {
A a= new A();
Class<? extends A> aClass20 = A.getClass();
a.setProductModel(b.getOp20ProductModel());
a.setBarCodeTrace(b.getOp20BarCodeTrace());
a.setBarCodeRawZero(b.getOp20BarCodeRawZero());
a.setLineCode(b.getOp20BarCodeRawZero());
a.setStationNo(b.getOp20StationNo());
a.setTemperatureOven(b.getOp20TemperatureOven());
// 判断 20固化 属性值是否全部为 null 或 "" 未维护返回 true 维护返回 false
Boolean flag = addOrEditFlag(aClass20, a);
// 只要维护任何一个字段就新增 没维护数据 不做处理
if(!flag){
// 取10底涂的 产品型号 玻璃原片序列号
a.setProductModel(b.getOp10ProductModel());
a.setBarCodeTrace(b.getOp10BarCodeTrace());
eplusHemmingOp20Mapper.insertHemmingOp20(a);
}
} else {
manualOnekeyRepairMapper.updateOp20ById(b);
}
由于多处需要处理,写一个公共的方法addOrEditFlag以便调用。BeanUtils 引用 org.apache.commons.beanutils 的。
// 判断 20 40 60 属性值是否全部为 null 或 ""
public static <T> Boolean addOrEditFlag(Class<? extends T> aClass,T aa) throws Exception {
boolean flag = true;
T t = aClass.cast(aa);
for (Field declaredField : aClass.getDeclaredFields()) {
// 排除对象中序列化字段
if("serialVersionUID".equals(declaredField.getName())) continue;
if(StringUtils.isNotBlank(BeanUtils.getProperty(t, declaredField.getName()))){
flag = false;
break;
}
}
return flag;
}