首页 > 其他分享 >属性拷贝忽略某些字段

属性拷贝忽略某些字段

时间:2023-12-22 09:03:03浏览次数:39  
标签:src String Object 忽略 columnName 拷贝 id 属性

  在更新数据时,如果使用的是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]);
}







 

标签:src,String,Object,忽略,columnName,拷贝,id,属性
From: https://www.cnblogs.com/sensenh/p/17920502.html

相关文章

  • Qt在ui界面设置组件样式,styleSheet属性
    QGroupBox{border:3pxsolidred;border-radius:15px;} QGroupBox#groupBoxBtns{border:3pxsolidgreen;border-radius:5px;} QPushButton{border:3pxsolidblack;border-radius:7px;} QPushButton:hover{border:3pxsolidblue;border-radiu......
  • Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
    Java序列化和反序列化SerializableBeanUtils.copyProperties赋值属性方法packagecom.example.core.mydemo.java;importcom.example.core.mydemo.json2.GsonUtils;importorg.springframework.beans.BeanUtils;importjava.io.*;/***Java序列化和反序列化Serializ......
  • 【代码块】-winform 获取控件属性和事件、自定义控件的自定义方法
    整理代码块代码块整理后存储,供后期使用C#获取属性,获取事件逻辑Controlcontrol=Controls.Find("button1",true)[0];//获取属性objecto=control.GetType().GetProperty("PropertyName").GetValue(control,null);//获取事件System.Reflection.EventInfoev=contr......
  • 数组属性和方法
    什么叫数组?在JavaScript中,数组不是基本类型,而是具有以下核心特征的Array对象:JavaScript数组是可调整大小的,并且可以包含不同的数据类型。(当不需要这些特征时,可以使用类型化数组。)JavaScript数组不是关联数组,因此,不能使用任意字符串作为索引访问数组元素,但必须使用非负整数(......
  • java深拷贝的几种方法
    使用序列化和反序列化:将集合对象序列化为字节流,然后再反序列化成一个新的对象。这种方式需要确保集合中的所有元素都是可序列化的。importjava.io.*;publicstaticsource){try{ByteArrayOutputStreambyteOut=newByteArrayOutputStream();ObjectOutputStreamout=new......
  • let a={name:'111',age:222} 如果b是空对象,a中的属性都是空,如果b中的属性是空,a中的属
    leta={name:'111',age:222};letb={};//Iterateoverthepropertiesofafor(letpropina){if(a.hasOwnProperty(prop)){//Assignanemptystringtothepropertyinaa[prop]='';}}console.log(a);{name......
  • 十六、组件-通用属性-位置设置
    位置设置设置组件对齐方式、布局方向和显示位置。align:设置元素内容在元素绘制区域内的对齐方式。direction:设置元素水平方向的布局。position:基于父容器的定位markAnchor:相对于自身的定位,x正数代表左移,负数代表右移;y正数代表上移,负数代表下移。offset:相对于自身的定......
  • 字符串属性和方法
    一、什么叫字符串?String(字符串)数据类型表示零或多个16位Unicode字符系列二、字符串的声明?使用双引号("")、单引号(’’)或反引号(`)标示。三、字符串的属性和方法1.属性length使用length属性可以获取字符串的长度conststr='abcdefg'str.length//7字符串虽然有长度,但是......
  • 测试数据请忽略
    测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据请忽略测试数据......
  • C++(深拷贝、潜拷贝)
    在C++中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是涉及对象复制的两个概念,特别是当涉及到类或结构体时。下面我将解释这两个概念:1.浅拷贝(ShallowCopy):浅拷贝是指将一个对象的内容复制到另一个对象,但如果对象中包含指针,则只会复制指针的值,而不是指针所指向的数据。这意味着两个对象......