最近在搞个项目,需要做到请求一个接口,这个接口可能涉及多张表的字段。做一套公共机制,可能直接根据是否上送了某张表的栏位更新对应表的值,没涉及的表则不更新。
思路
将接口dto采用copy工具,给入到一个个类中,然后判断每个类是否存在有值得属性。
public class ObjectUtil {
public static boolean hasContent(Object object) {
return hasContestWithoutKeys(object, Collections.singletonList(""));
}
public static boolean hasContentWithoutKeys(Object object,List<String> keys) {
final Field[] fields = ReflectUtil.getFields(object.getClass());
try {
for (Field field : fields) {
if (!field.isSynthetic()) {
final boolean accessible = field.isAccessible();
if (null != field.get(object) && !keys.contains(field.getName())) {
return true;
}
field.setAccessible(accessible);
}
}
} catch (Exception e) {
//nothing to do
}
return false;
}
}
List keys 可以通过 Arrays.asList(“id”,“name”)的形式传值。