两实体之间属性字段的自动赋值
2018-03-21 13:59
921 查看
在开发的过程中,实体之间相互赋值是很正常的事,但是我们一般的方法都通过set和get方法来进行的,如果要赋值的字段少那还行,但是需要赋值的字段超过10个,那就是个灾难,你会看到整屏代码中全是set和get方法。
为了解决这个问题,请上今天的主角,ObjectMapper,全路径为
首先,我们要区分实体之间的属性拷贝是哪种性质的
1、两个实体属性字段几乎完全相同
2、两个字体有部分字段相同
对于第1点来说,我们用到最多的就是entity和dto之间的转换了,这个我们可以使用Spring的工具类BeanUtils来解决,这里要注意的一点是,第一个参数是源,第二个参数是目标。
但是对于第2点来说,就没有那么简单了,再使用BeanUtils已经不能满足我们的需要了。
我们可以使用jackson的ObjectMapper
这个只会将两个实体中,属性名相同的名称进行赋值,如果要对不同名称的属性进行赋值还请手动补值。
上面的方法可以大大减少代码的编写,同时提高代码的效率。
为了解决这个问题,请上今天的主角,ObjectMapper,全路径为
com.fasterxml.jackson.databind.ObjectMapper
首先,我们要区分实体之间的属性拷贝是哪种性质的
1、两个实体属性字段几乎完全相同
2、两个字体有部分字段相同
对于第1点来说,我们用到最多的就是entity和dto之间的转换了,这个我们可以使用Spring的工具类BeanUtils来解决,这里要注意的一点是,第一个参数是源,第二个参数是目标。
import org.springframework.beans.BeanUtils;
BeanUtils.copyProperties(origin, target);
但是对于第2点来说,就没有那么简单了,再使用BeanUtils已经不能满足我们的需要了。
我们可以使用jackson的ObjectMapper
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.jd.fastjson.JSON; ObjectMapper objectMapper = new ObjectMapper(); //配置该objectMapper在反序列化时,忽略目标对象没有的属性。凡是使用该objectMapper反序列化时,都会拥有该特性。 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //读入需要更新的目标实体 ObjectReader objectReader = objectMapper.readerForUpdating(target); //将源实体的值赋值到目标实体上 objectReader.readValue(JSON.toJSONString(source));
这个只会将两个实体中,属性名相同的名称进行赋值,如果要对不同名称的属性进行赋值还请手动补值。
上面的方法可以大大减少代码的编写,同时提高代码的效率。
相关文章推荐
- 在ArcGIS属性表中增加需要的字段,并自动赋值
- 在ArcGIS属性表中增加需要的字段,并自动赋值
- 在ArcGIS属性表中增加需要的字段,并自动赋值
- C#中,实体属性与数据库字段的进行反射赋值收藏
- 在ARCGIS属性表中增加需要的字段,并自动赋值
- 实体类相同属性之间相互赋值
- Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?
- 不同实体类相同属性之间的快速赋值
- mybatis插入一个对象后获取表中自增的主键Id并且传入到插入的的对象中,方便将对象中其他属性赋值给其他以前表主键Id作为非空字段的表
- C#遍历实体的所有属性并为属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- “自动生成字段声明,对象转换属性设置"脚本工具
- 有关apache包里面的BeanUtils.copyProperties 字段类型为Integer或者Double时,自动赋值为默认值的问题随笔
- 利用反射把DataTable自动赋值到Model实体(自动识别数据类型)
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- 相同实体字段的赋值
- 笔记<二>C# 字段、属性、自动属性(转)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
- 将页面的控件值给实体自动赋值