属性拷贝忽略某些字段
在更新数据时,如果使用的是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]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示