Mapstruct(java代码简洁之道)Mapstruct助力pojo之间的花式转换

本文介绍了MapStruct的使用,它是一个自动代码生成库,用于简化Java对象之间的转换。通过@Mapper注解和默认映射规则,可以减少手动编写转换代码的繁琐。此外,还讲解了@Mappings、@AfterMapping、@BeanMapping等高级特性,以及如何与Spring整合,提高开发效率。
摘要由CSDN通过智能技术生成

一、mapstruct简介

1、官网:https://mapstruct.org/,使用的版本1.3.1.Final

2、使用场景 :pojo(参考lombok)之间的相互转化。

 3、不同的convert解决方案

二、Mapstruct的使用

2.1不使用框架的缺点

1、多而杂的代码与业务逻辑耦合,不能突出业务逻辑的重点

2、重复的劳动

2.2@Mapper

1、默认映射规则

同类型且同名的属性,会自动映射

2、mapstruct会自动类型转换

8种基本类型和他们对应的包装类型之间

8种基本类型(包括他们的包装类型)和String之间

日期类型和String之间

2.3@Mappings和Mapping

1、指定属性之间的映射关系

1.1日期格式化:dateFormat = "yyyy-MM-dd HH:mm:ss"

1.2数字格式化:numberFormat = "#.00"

source或target多余的属性对方没有,不会报错的。

2、ignore

3、属性是引用对象的映射处理

4、批量映射

2.4@AfterMapping和@MappingTarget

1、在映射最后一步对属性的自定义映射处理

2.5@BeanMapping

1、ignoreByDefault: 忽略mapstruct的默认映射行为。避免不需要的赋值,避免属性覆盖

2.6@InheritConfiguration

1、更新的场景,避免同样的配置写多份

2.7@InheritlnverseConfiguration

1、反向映射不用反过来再写一遍,注意:只继承@Mapping注解配置,不会继承@BeanMapping

2.8mapstruct跟spring整合使用

     

       以上是我在B站视频中,学习的Mapstruct的笔记,希望能够给大家带来帮助,如有不足之处还希望各路大神批评指正。谢谢大家~~~~

        好东西当然要拿出来跟大家一起分享,噗呲噗呲,下面链接是我在B站的学习视屏。

        https://www.bilibili.com/video/BV1E5411n7HR?from=search&seid=14479608931005125925

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
对于MapStruct类型转换,您可以按照以下步骤进行操作: 1. 首先,在您的项目中添加MapStruct依赖。您可以在Maven或Gradle构建工具中添加相应的依赖项。 2. 创建源类型(source type)和目标类型(target type),这些类型可以是POJO(普通Java对象)。 3. 在源类型和目标类型之间创建一个Mapper接口。该接口应该使用`@Mapper`注解进行标记,并且可以定义多个转换方法。 4. 在转换方法中,使用`@Mapping`注解指定源类型和目标类型之间映射关系。您可以使用属性名称、表达式或自定义转换器来定义映射规则。 5. 在您的代码中使用`Mapper`接口生成的实现类,通过调用转换方法进行类型转换。 下面是一个简单的示例: ```java // 源类型 public class Source { private String name; private int age; // getter和setter方法省略 } // 目标类型 public class Target { private String fullName; private int yearsOld; // getter和setter方法省略 } // Mapper接口 @Mapper public interface SourceTargetMapper { @Mapping(source = "name", target = "fullName") @Mapping(source = "age", target = "yearsOld") Target sourceToTarget(Source source); } // 使用转换器 public class Main { public static void main(String[] args) { Source source = new Source(); source.setName("John"); source.setAge(25); SourceTargetMapper mapper = Mappers.getMapper(SourceTargetMapper.class); Target target = mapper.sourceToTarget(source); System.out.println(target.getFullName()); // 输出: John System.out.println(target.getYearsOld()); // 输出: 25 } } ``` 通过以上步骤,您可以使用MapStruct进行源类型和目标类型之间转换。请注意,MapStruct还支持更复杂的转换场景,例如集合映射和嵌套映射。您可以在MapStruct的官方文档中了解更多详细信息。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值