对象属性值copy-Mapstruct
来源:互联网 发布:服务器端口检测工具 编辑:程序博客网 时间:2024/06/06 17:15
在许多项目中都会设计实体对象的转换拷贝,如果字段比较多使用set和get会使代码显得比较臃肿,然而大部分工具类比如:
BeanUtils.copyProperties(user, uForm) 等使用反射原理会大大的影响性能。Mapstruct就很好的解决了性能问题,它的原理就是自动帮我们封装get,set方法。
由于本人使用的是Eclipse,在网上看到许多前辈说eclipse 不会自动生成转换接口mapper的实现类(好像idea会)。所以第一步需要在pom文件中添加
<properties><m2e.apt.activation>jdt_apt</m2e.apt.activation></properties>引用它之后在编译时就会自动生成实现类了!!
然后添加pom依赖
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.1.0.Final</version> <scope>provided</scope> </dependency>创建DO以及VO对象
package com.xzs.MapstructDemo;/** * DO对象 * @Description:TODO * @exception: * @author: 徐正顺 * @time:2017年10月27日 下午5:32:27 */public class ObjFrom {private String name;private String eName;private String email;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String geteName() {return eName;}public void seteName(String eName) {this.eName = eName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
package com.xzs.MapstructDemo;/** * VO 对象 * @Description:TODO * @exception: * @author: 徐正顺 * @time:2017年10月27日 下午5:33:44 */public class ObjTo {private String myname;private String myEmail;private int age;public String getMyname() {return myname;}public void setMyname(String myname) {this.myname = myname;}public String getMyEmail() {return myEmail;}public void setMyEmail(String myEmail) {this.myEmail = myEmail;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "ObjTo [myname=" + myname + ", myEmail=" + myEmail + ", age=" + age + "]";}}
package com.xzs.MapstructDemo;import org.mapstruct.Mapping;import org.mapstruct.factory.Mappers;/** * 对象属性值copy mapper * @Description:TODO * @exception: * @author: 徐正顺 * @time:2017年10月27日 下午5:34:55 */public interface ObjMapper {ObjMapper INSTANCE = Mappers.getMapper( ObjMapper.class ); /** * ObjFrom 自动转换为 ObjTo * @Description:TODO * @param from * @return * ObjTo * @exception: * @author: 徐正顺 * @time:2017年10月27日 下午3:29:44 * * 使用@Mapping 可以指定不同字段名间的转换(类型必须相同) * source = "eName" ObjFrom的eName属性值copy到ObjTo的myname值 target = "myname" */ @Mapping(source = "eName", target = "myname") @Mapping(source = "email", target = "myEmail") ObjTo carToCarDto(ObjFrom from); }
/** 测试方法 * Mapstruct 对象属性值copy * @Description:TODO * void * @exception: * @author: 徐正顺 * @time:2017年10月27日 下午3:38:46 */@Testpublic void contextLoads() {ObjFrom from =new ObjFrom();from.seteName("哼哈");from.seteName("HenHa");from.setEmail("sb110@xzs.cn");from.setAge(23);ObjTo to= ObjMapper .INSTANCE.carToCarDto(from);System.out.println(to.toString());}
代码地址:https://github.com/xuzhengshun/ObjConvert
阅读全文
1 0
- 对象属性值copy-Mapstruct
- 两个bean对象属性值copy源码
- Java两个对象copy属性值
- 处理对象相互copy属性的问题
- java 将A对象的值copy到B对象(根据属性名设置属性值)
- OC基础——copy语法(Student属性的copy、Student对象的copy、Student子类对象的copy)
- 复制对象(三)属性的copy特性(续)
- 子类copy 父类的属性值
- MapStruct使用
- MapStruct处理Java中实体与模型间不匹配属性转换
- 将一个对象的属性copy到另外一个对象里
- 属性copy性能比较
- NSString的copy 属性
- property中的copy属性
- JavaBean 属性copy
- 复制对象(二)<NSCopying>协议和属性的copy特性
- 复制对象(二)<NSCopying>协议和属性的copy特性
- 关于OC对象属性中的NSString类型为什么用copy修饰
- Java中的引用传递和值传递
- Visual studio code 使用 Team Foundation Server
- SpringMVC学习之一(环境准备)
- Qt中定时器使用的两种方法
- vue ...mapActions()含义 (es6 剩余操作符)
- 对象属性值copy-Mapstruct
- Sublime Text 3 快捷键精华版
- android资源文件的使用(背景选择器,动画等)
- Winform 无边框 绘制自定义边框
- cuda+gpu+cudnn+caffe+opencv
- Qt实现计算器
- jquery 实现 table 和 标题 的联动显示
- JS——简单的登录框提示
- 安卓listview item内部控件操作方法