当前位置: 代码网 > it编程>编程语言>Java > Java使用mapstruct实现对象拷贝

Java使用mapstruct实现对象拷贝

2024年12月07日 Java 我要评论
mapstructs实现对象拷贝:单个对象拷贝(默认只拷贝属性名和方法名都相同的值),当属性名或者属性类型不同时可使用@mapping注解进行映射list拷贝list嵌套list拷贝代码示例impor

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对象拷贝内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com