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; } } }
MapSturct 是一个生成类型安全, 高性能且无依赖的 JavaBean 映射代码的注解处理器(annotation processor)。 抓一下重点: 1.注解处理器 2.可以生成 JavaBean 之间那的映射代码 3.类型安全, 高性能, 无依赖性 4.入门很简单。我是基于 Maven 来进行项目 jar 包管理的 5.生成的代码是对立的, 没有运行时的依赖。 6.由于不需要进行反射, 其性能是很高的(无论是spring还是appache 的BeanUtil.cpoy还是Cglib的BeanCpoier都是用的反射)
本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/15291388.html