mapStruct使用

mapStruct使用

1.引入依赖

作用对象中指的转换,可转对象和list

<!--mapStruct依赖 高性能对象映射-->
        <!--mapstruct核心-->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.5.0.Beta1</version>
        </dependency>
        <!--mapstruct编译-->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.5.0.Beta1</version>
        </dependency>

2. 创建两个对象

@Data
public class Person {

    String describe;

    private String id;

    private String name;

    private int age;

    private BigDecimal source;

    private double height;

    private LocalDateTime createTime;
}
@Data
public class PersonDTO {

    String describe;

    private Long id;

    private String personName;

    private String age;

    private String source;

    private String height;

    private String createTime;
}

3.创建转换mapper

@Mapper //import org.mapstruct.Mapper;
public interface PersonMapper {
    PersonMapper INSTANCT = Mappers.getMapper(PersonMapper.class);

    @Mapping(target = "personName", source = "name") //不同名称转换, target 目标字段  source 来源字段
    @Mapping(target = "id", ignore = true)// 忽略id,不进行映射
    /**
     * numberFormat 指定基本数据类型与String之间的转换
     * dateFormat 指定Date和String之间的转换
     */
    @Mapping(target = "age", numberFormat = "#岁")  // 这里 # 表示多个数字,  0 表示一个数字(0-9)
    @Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Mapping(target = "describe", defaultValue = "设置默认值") //如果describe 为空则使用默认值
    PersonDTO conver(Person person);

    //list转换  实际遍历调用conver方法 如果有待处理字段在conver方法上处理
    List<PersonDTO> toPersonDTOList(List<Person> personList);
}

4.调用测试

    @Test
    void contextLoads() {
        Person person = new Person();
        person.setAge(20);
        person.setId("1");
        person.setHeight(1.8);
        person.setName("ss");
        person.setCreateTime(LocalDateTime.now());
        PersonDTO conver = PersonMapper.INSTANCT.conver(person);
        System.out.println(conver);
    }
PersonDTO(describe=设置默认值, id=null, personName=ss, age=20, source=null, height=1.8, createTime=2022-09-06 17:42:47)
    @Test
    void toPersonDTOList() {
        ArrayList<Person> people = new ArrayList<>();
        Person person = new Person();
        person.setAge(20);
        person.setId("1");
        person.setHeight(1.8);
        person.setName("ss");
        Person person1 = new Person();
        person1.setId("2");
        person1.setName("hekai");
        people.add(person);
        people.add(person1);

        List<PersonDTO> personDTOS = PersonMapper.INSTANCT.toPersonDTOList(people);
        System.out.println(personDTOS);
    }
[PersonDTO(describe=设置默认值, id=null, personName=ss, age=20, source=null, height=1.8, createTime=null), PersonDTO(describe=设置默认值, id=null, personName=hekai, age=0, source=null, height=0.0, createTime=null)]

5.下载idea插件 mapstruct support

  • 作用:可以再mapper中点属性跳到对应对象中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值