public class CopyOptions extends Object implements Serializable
Modifier and Type | Field and Description |
---|---|
protected boolean |
autoTransCamelCase
是否自动转换为驼峰方式
|
protected TypeConverter |
converter
自定义类型转换器,默认使用全局万能转换器转换
|
protected Class<?> |
editable
限制的类或接口,必须为目标对象的实现接口或父类,用于限制拷贝的属性,例如一个类我只想复制其父类的一些属性,就可以将editable设置为父类
如果目标对象是Map,源对象是Bean,则作用于源对象上 |
protected BiFunction<String,Object,Object> |
fieldValueEditor
字段属性值编辑器,用于自定义属性值转换规则,例如null转""等
|
protected boolean |
ignoreCase
是否忽略字段大小写
|
protected boolean |
ignoreError
是否忽略字段注入错误
|
protected boolean |
ignoreNullValue
是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入null
|
protected boolean |
override
是否覆盖目标值,如果不覆盖,会先读取目标对象的值,非
null 则写,否则忽略。 |
protected boolean |
transientSupport
是否支持transient关键字修饰和@Transient注解,如果支持,被修饰的字段或方法对应的字段将被忽略。
|
Constructor and Description |
---|
CopyOptions()
构造拷贝选项
|
CopyOptions(Class<?> editable,
boolean ignoreNullValue,
String... ignoreProperties)
构造拷贝选项
|
Modifier and Type | Method and Description |
---|---|
protected Object |
convertField(Type targetType,
Object fieldValue)
使用自定义转换器转换字段值
如果自定义转换器为 null ,则返回原值。 |
static CopyOptions |
create()
创建拷贝选项
|
static CopyOptions |
create(Class<?> editable,
boolean ignoreNullValue,
String... ignoreProperties)
创建拷贝选项
|
protected String |
editFieldName(String fieldName)
转换字段名为编辑后的字段名
|
protected Object |
editFieldValue(String fieldName,
Object fieldValue)
编辑字段值
|
protected PropDesc |
findPropDesc(Map<String,PropDesc> targetPropDescMap,
String sKeyStr)
查找Map对应Bean的名称
尝试原名称、转驼峰名称、isXxx去掉is的名称 |
String |
getFormatIfDate()
获取日期格式,用于日期转字符串,默认为
null |
CopyOptions |
ignoreCase()
设置忽略字段的大小写
|
CopyOptions |
ignoreError()
设置忽略字段的注入错误
|
CopyOptions |
ignoreNullValue()
设置忽略空值,当源对象的值为null时,忽略而不注入此值
|
CopyOptions |
setAutoTransCamelCase(boolean autoTransCamelCase)
设置是否自动转换为驼峰方式
一般用于map转bean和bean转bean出现非驼峰格式时,在尝试转换失败的情况下,是否二次检查转为驼峰匹配 此设置用于解决Bean和Map转换中的匹配问题而设置,并不是一个强制参数。 |
CopyOptions |
setConverter(TypeConverter converter)
设置自定义类型转换器,默认使用全局万能转换器转换。
|
CopyOptions |
setEditable(Class<?> editable)
设置限制的类或接口,必须为目标对象的实现接口或父类,用于限制拷贝的属性
|
CopyOptions |
setFieldMapping(Map<String,String> fieldMapping)
设置拷贝属性的字段映射,用于不同的属性之前拷贝做对应表用
需要注意的是,当使用ValueProvider作为数据提供者时,这个映射是相反的,即fieldMapping中key为目标Bean的名称,而value是提供者中的key |
CopyOptions |
setFieldNameEditor(Editor<String> fieldNameEditor)
设置字段属性编辑器,用于自定义属性转换规则,例如驼峰转下划线等
此转换器只针对源端的字段做转换,请确认转换后与目标端字段一致 当转换后的字段名为null时忽略这个字段 需要注意的是,当使用ValueProvider作为数据提供者时,这个映射是相反的,即fieldMapping中key为目标Bean的名称,而value是提供者中的key |
CopyOptions |
setFieldValueEditor(BiFunction<String,Object,Object> fieldValueEditor)
设置字段属性值编辑器,用于自定义属性值转换规则,例如null转""等
|
CopyOptions |
setFormatIfDate(String formatIfDate)
设置日期格式,用于日期转字符串,默认为
null |
CopyOptions |
setIgnoreCase(boolean ignoreCase)
设置是否忽略字段的大小写
|
CopyOptions |
setIgnoreError(boolean ignoreError)
设置是否忽略字段的注入错误
|
CopyOptions |
setIgnoreNullValue(boolean ignoreNullVall)
设置是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入null
|
<P,R> CopyOptions |
setIgnoreProperties(Func1<P,R>... funcs)
设置忽略的目标对象中属性列表,设置一个属性列表,不拷贝这些属性值,Lambda方式
|
CopyOptions |
setIgnoreProperties(String... ignoreProperties)
设置忽略的目标对象中属性列表,设置一个属性列表,不拷贝这些属性值
|
CopyOptions |
setOverride(boolean override)
设置是否覆盖目标值,如果不覆盖,会先读取目标对象的值,为
null 则写,否则忽略。 |
CopyOptions |
setPropertiesFilter(BiPredicate<Field,Object> propertiesFilter)
|
CopyOptions |
setTransientSupport(boolean transientSupport)
设置是否支持transient关键字修饰和@Transient注解,如果支持,被修饰的字段或方法对应的字段将被忽略。
|
protected boolean |
testKeyFilter(Object key)
测试是否保留key,
true 不保留, false 保留 |
protected boolean |
testPropertyFilter(Field field,
Object value)
测试是否保留字段,
true 保留,false 不保留 |
protected Class<?> editable
protected boolean ignoreNullValue
protected boolean ignoreError
protected boolean ignoreCase
protected BiFunction<String,Object,Object> fieldValueEditor
protected boolean transientSupport
protected boolean override
null
则写,否则忽略。如果覆盖,则不判断直接写protected boolean autoTransCamelCase
protected TypeConverter converter
public static CopyOptions create()
public static CopyOptions create(Class<?> editable, boolean ignoreNullValue, String... ignoreProperties)
editable
- 限制的类或接口,必须为目标对象的实现接口或父类,用于限制拷贝的属性ignoreNullValue
- 是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入nullignoreProperties
- 忽略的属性列表,设置一个属性列表,不拷贝这些属性值public CopyOptions setEditable(Class<?> editable)
editable
- 限制的类或接口public CopyOptions setIgnoreNullValue(boolean ignoreNullVall)
ignoreNullVall
- 是否忽略空值,当源对象的值为null时,true: 忽略而不注入此值,false: 注入nullpublic CopyOptions ignoreNullValue()
public CopyOptions setPropertiesFilter(BiPredicate<Field,Object> propertiesFilter)
propertiesFilter
- 属性过滤器public CopyOptions setIgnoreProperties(String... ignoreProperties)
ignoreProperties
- 忽略的目标对象中属性列表,设置一个属性列表,不拷贝这些属性值public <P,R> CopyOptions setIgnoreProperties(Func1<P,R>... funcs)
P
- 参数类型R
- 返回值类型funcs
- 忽略的目标对象中属性列表,设置一个属性列表,不拷贝这些属性值public CopyOptions setIgnoreError(boolean ignoreError)
ignoreError
- 是否忽略注入错误public CopyOptions ignoreError()
public CopyOptions setIgnoreCase(boolean ignoreCase)
ignoreCase
- 是否忽略大小写public CopyOptions ignoreCase()
public CopyOptions setFieldMapping(Map<String,String> fieldMapping)
fieldMapping
- 拷贝属性的字段映射,用于不同的属性之前拷贝做对应表用public CopyOptions setFieldNameEditor(Editor<String> fieldNameEditor)
fieldNameEditor
- 字段属性编辑器,用于自定义属性转换规则,例如驼峰转下划线等public CopyOptions setFieldValueEditor(BiFunction<String,Object,Object> fieldValueEditor)
fieldValueEditor
- 字段属性值编辑器,用于自定义属性值转换规则,例如null转""等protected Object editFieldValue(String fieldName, Object fieldValue)
fieldName
- 字段名fieldValue
- 字段值public CopyOptions setTransientSupport(boolean transientSupport)
transientSupport
- 是否支持public CopyOptions setOverride(boolean override)
null
则写,否则忽略。如果覆盖,则不判断直接写override
- 是否覆盖目标值public CopyOptions setAutoTransCamelCase(boolean autoTransCamelCase)
但是bean转Map和map转map时,没有使用这个参数,是因为没有匹配的必要,转map不存在无法匹配到的问题,因此此参数无效。
autoTransCamelCase
- 是否自动转换为驼峰方式public CopyOptions setConverter(TypeConverter converter)
converter
- 转换器public String getFormatIfDate()
null
public CopyOptions setFormatIfDate(String formatIfDate)
null
formatIfDate
- 日期格式protected Object convertField(Type targetType, Object fieldValue)
null
,则返回原值。targetType
- 目标类型fieldValue
- 字段值protected String editFieldName(String fieldName)
fieldName
- 字段名protected boolean testPropertyFilter(Field field, Object value)
true
保留,false
不保留field
- 字段value
- 值protected boolean testKeyFilter(Object key)
true
不保留, false
保留key
- Map
keyCopyright © 2024. All rights reserved.