mapstructs实现对象拷贝:
- 单个对象拷贝(默认只拷贝属性名和方法名都相同的值),当属性名或者属性类型不同时可使用@mapping注解进行映射
- list拷贝
- list嵌套list拷贝
代码示例
import lombok.allargsconstructor;
import lombok.data;
import org.mapstruct.mapper;
import org.mapstruct.mapping;
import org.mapstruct.mappings;
import org.mapstruct.factory.mappers;
import java.util.list;
import java.util.stream.collectors;
import java.util.stream.stream;
/**
* mapstructs实现实现拷贝:
* 1、单个对象拷贝
* 2、list拷贝
* 3、list嵌套拷贝
* 4、自定义拷贝规则
* mapsturct 是一个生成类型安全, 高性能且无依赖的 javabean 映射代码的注解处理器,编译后会生产相应代码,路径为
* target/generated-sources/annotations/beancopierutilimpl.java
*/
@mapper
interface beancopierutil {
beancopierutil instance = mappers.getmapper(beancopierutil.class);
/**
* 单个对象转化
* @param userdto
* @return
*/
@mappings({
@mapping(target = "username", source = "user_name")
})
uservo tovo(userdto userdto);
/**
* list集合拷贝,支持嵌套,需要定义userdto到uservo的转化
*/
list<uservo> tovo(list<userdto> userlist);
}
public class mapstructtest {
public static void main(string[] args) {
list<userdto> userdtolist = stream.of(
new userdto("1","张三",5),
new userdto("2","李四",6)
).collect(collectors.tolist());
list<uservo> result = beancopierutil.instance.tovo(userdtolist);
system.out.println(userdtolist);
system.out.println(result);
}
}
@data
@allargsconstructor
class userdto {
private string id;
private string user_name;
private integer user_age;
}
@data
class uservo {
private string id;
private string username;
private integer userage;
}
运行结果
[userdto(id=1, user_name=张三, user_age=5), userdto(id=2, user_name=李四, user_age=6)]
[uservo(id=1, username=张三, userage=null), uservo(id=2, username=李四, userage=null)]
pom.xml引入依赖包
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<mapstruct.version>1.5.5.final</mapstruct.version>
</properties>
<dependencies>
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>1.18.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupid>org.mapstruct</groupid>
<artifactid>mapstruct</artifactid>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupid>org.mapstruct</groupid>
<artifactid>mapstruct-processor</artifactid>
<version>${mapstruct.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
备注
编译之后自动生成方法实现,位置为:

到此这篇关于java使用mapstruct实现对象拷贝的文章就介绍到这了,更多相关mapstruct对象拷贝内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论