首页 > 其他分享 >MapperFacade高效copy工具

MapperFacade高效copy工具

时间:2022-12-02 01:22:41浏览次数:36  
标签:高效 定义 public mapperFactory copy mapperFacade class MapperFacade

  1. 导入maven

        <!--mapperfacede copy神器-->
        <dependency>
            <groupId>ma.glasnost.orika</groupId>
            <artifactId>orika-core</artifactId>
            <version>1.5.4</version>
        </dependency>
    
  2. 定义mapperFactory,然后定义特殊映射关系,在获取MapperFacade对象

    三个实体对象,Entity1,Entity2都一样,Entity3 吧name字段改成了name2



    下面是定义的配置文件

   @Configuration
   public class MapperFacadeConfig {

    /**
     * 定义mapperFacade
     * @return
     */
    @Bean
    public MapperFacade getMapperFacade() {
        DefaultMapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
        addMapper( mapperFactory );
        return mapperFactory.getMapperFacade();
    }

    /**
     * 配置映特殊映射关系
     * @param mapperFactory
     */
    public void addMapper(DefaultMapperFactory mapperFactory){
        mapperFactory.classMap(Entity1.class, Entity3.class)
                .field("name","name1")//不一样的字段映射
                .byDefault()//剩余的字段映射
                .register();

    }


}
  1. 使用MapperFacade 复制对象
    @Autowired
    MapperFacade mapperFacade;



    @Test
    public void t1() {
        Entity1 entity1 = new Entity1(2L,"name3321");

        Entity2 entity2 = mapperFacade.map(entity1, Entity2.class);
        Entity3 entity3 = mapperFacade.map(entity1, Entity3.class);

        System.out.println( "entity2:" +JSONUtil.toJsonStr( entity2 ) );
        System.out.println( "entity3:" +JSONUtil.toJsonStr( entity3 ) );

    }

结果:

  1. mapper 的复制不是用的反射,而是get 和 set 方法,同名字段直接复制(可以类型装换的也会自动装换),不同名字的需要单独定义,mapperfacede 会在第一次使用两个类型之间复制的时候生成对象的 get set 方法辅助类,并且缓存起来,二次复制的时候直接使用,特殊定义copy辅助类的生成时间在定义关系的时候。

标签:高效,定义,public,mapperFactory,copy,mapperFacade,class,MapperFacade
From: https://www.cnblogs.com/cxygg/p/16943258.html

相关文章

  • 50亿海量数据如何高效存储和分析?​ 华为云数据库GaussDB (for Cassandra) 3个秘诀搞定
    50亿海量数据如何高效存储和分析?​华为云数据库GaussDB(forCassandra)3个秘诀搞定​当下,信息社会正在从互联网时代走向物联网时代,信息交互变得更加庞杂、高效和智能。对......
  • copy member from void * array
    void*copy_element(constvoid*src[],intcnt,size_tsize){void*result=0;char*p;size_tnum=0;for(inti=0;i<cnt;i++){num+=size;res......
  • Entity Framework Core 7中高效地进行批量数据插入
    因为之前的版本中,EFCore无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。从.NET7开始,微软在Ent......
  • React Webpack copy文件到build路径
    目的:webpack打包时将资源文件copy到指定路径1:安装依赖copy-webpack-plugin、customize-cra、react-app-rewired2:修改script,使用react-app-rewired命令"build:copy":"......
  • 关于python的copy模块内的浅拷贝和深拷贝
    Python中赋值语句不复制对象,而是在目标和对象之间创建绑定(bindings)关系,即复制的是对象的引用。对于自身可变(如列表)或者包含可变项的集合对象(如嵌套列表),有必要生成......
  • Java高效自学,应知道的知识
    JAVA简介    Java已经多年连续占据编程语言的榜首,Java是一门面向对象编程语言,它不仅吸收了C++语言的各种优点,还摒弃了C++语言中难以理解的多继承、指针等概念,因此Jav......
  • 企业内部统一的移动平台,实现安全高效的业务移动化
    移动办公在数字时代已经司空见惯,无论是出差、办公室与项目地点来回奔波,还是因疫情而居家办公的人,都需要借助移动办公软件进行来线上办公。那么,如何提高企业员工在移动办公......
  • 企业内部统一的移动平台,实现安全高效的业务移动化
    移动办公在数字时代已经司空见惯,无论是出差、办公室与项目地点来回奔波,还是因疫情而居家办公的人,都需要借助移动办公软件进行来线上办公。那么,如何提高企业员工在移动办公时......
  • 高效率开发Web安全扫描器之路(一)
    一、背景经常看到一些SRC和CNVD上厉害的大佬提交了很多的漏洞,一直好奇它们怎么能挖到这么多漏洞,开始还以为它们不上班除了睡觉就挖漏洞,后来有机会认识了一些大佬,发现它们......
  • 华为云桌面Workspace,让云上工作更高效!​
    华为云桌面Workspace,让云上工作更高效!​大家是否在工作中遇到过因为电脑工作不流畅的问题而生气的摔鼠标、砸键盘,又或者是因为导入导出文件过大,导致频频导出失败的案例呢?相......