zoukankan      html  css  js  c++  java
  • mapstruct 再也不用set不同的属性而劳累了

    public enum Enums {
        ADS
    }
    
    
    1.相同字段 不同属性的转换  如age
    2.相同字段相同属性的转换   如name
    3.不同类型不同字段的转换  如sex
    
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Demo0 {
        private  Long age;
        private  String name;
        private  String sex;
    
        private String hobby;
    }
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Demo implements Serializable {
        private  Integer age;
        private  String name;
        private  Enums enums;
        private String love;
    
    }
    
    配置类,原理是利用clasloader:
    
    package com.example.demo.demoTest;
    
    
    import org.mapstruct.Mapper;
    import org.mapstruct.Mapping;
    import org.mapstruct.Mappings;
    import org.mapstruct.factory.Mappers;
    
    import java.util.List;
    
    
    @Mapper
    public interface PersonConverter {
        PersonConverter INSTANCE = Mappers.getMapper(PersonConverter.class);
        @Mappings({
                @Mapping(target = "age" ,expression = "java(versionConvert(demo.getAge()))"),
                @Mapping(target = "hobby" , source ="love")
    
        })
        Demo0 domain2dto(Demo demo);
    
        List<Demo0> domain2dt(List<Demo> demo);
    
        //转换versionTitle
        default Long versionConvert(Integer age){
            return Long.valueOf(age);
        }
    }
    
    编译后的代码如下:看完后就会发现,妈妈再也不用担心我set,get了
    
    public class PersonConverterImpl implements PersonConverter {
        public PersonConverterImpl() {
        }
    
        public Demo0 domain2dto(Demo demo) {
            if (demo == null) {
                return null;
            } else {
                Demo0 demo0 = new Demo0();
                demo0.setHobby(demo.getLove());
                demo0.setName(demo.getName());
                demo0.setAge(this.versionConvert(demo.getAge()));
                return demo0;
            }
        }
    
        public List<Demo0> domain2dt(List<Demo> demo) {
            if (demo == null) {
                return null;
            } else {
                List<Demo0> list = new ArrayList(demo.size());
                Iterator var3 = demo.iterator();
    
                while(var3.hasNext()) {
                    Demo demo1 = (Demo)var3.next();
                    list.add(this.domain2dto(demo1));
                }
    
                return list;
            }
        }
    }
    
    一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰
  • 相关阅读:
    Android高手进阶教程(五)之----Android 中LayoutInflater的使用!
    APDPlat
    微博项目学习笔记
    iOS极光推送进一部使用(重点)
    iOS 打测试包
    自定义UICollectionViewFlowLayout
    解决UITableview 底部留白
    NSAttributedString 富文本样式
    OC排序算法
    CALayer,,,CATextLayer,,,CAShapeLayer,, CAGradientLayer
  • 原文地址:https://www.cnblogs.com/wangbiaohistory/p/15291388.html
Copyright © 2011-2022 走看看