• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

mapstruct 再也不用set不同的属性而劳累了

开发技术 开发技术 3小时前 3次浏览
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;
        }
    }
}

 


程序员灯塔
转载请注明原文链接:mapstruct 再也不用set不同的属性而劳累了
喜欢 (0)