属性拷贝忽略某些字段

  在更新数据时,如果使用的是UUID随机生成id,在属性拷贝后id就会和数据库中的该条数据的id不一致,导致更新失败并且新增一条除了id字段其他字段都相同的一条数据,这时就可以使用忽略某些字段的方法进行属性拷贝,比如在拷贝时忽略id,这样就只是将除了id之外的其他所有字段进行拷贝从而进行正常更新。

方法如下:

public class StringUtils extends org.springframework.util.StringUtils {

      public static void copyPropertiesIgnoreNull(Object src, Object target, String... ignoreColumn) {
            BeanUtils.copyProperties(src, target, getNullPropertyNames(src, ignoreColumn));
      }

}

 

 

public static String[] getNullPropertyNames(Object source, String... ignoreColumn) {

final BeanWrapper src = new BeanWrapperImpl(source);

java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();

Set<String> emptyNames = new HashSet<>();
for (java.beans.PropertyDescriptor pd : pds) {

String columnName = pd.getName();

// 是否为忽略字段
if (Arrays.asList(ignoreColumn).contains(columnName)) {
emptyNames.add(columnName);
continue;
}

Object srcValue = src.getPropertyValue(columnName);
//是否为null
if (srcValue == null) {
emptyNames.add(columnName);
}
}

return emptyNames.toArray(new String[0]);
}







 

posted @   sensen~||^_^|||&  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示