栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实体类映射工具MapStruct

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实体类映射工具MapStruct

一、工具出现背景 二、工具介绍

 MapStruct是一个属性映射工具,只需要自定义一个Mapper接口或者抽象的Mapper类,MapStruct就会自动为你实现该接或抽象方法,避免了映射实现的繁杂细节。官网地址:http://mapstruct.org/。

三、工具使用

1、添加依赖

implementation 'org.mapstruct:mapstruct:1.3.1.Final'
annotationProcessor "org.mapstruct:mapstruct-processor:1.3.1.Final"

2、定义接口或抽象方法,并添加@Mapper

@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT, unmappedTargetPolicy = ReportingPolicy.IGNORE,imports = {LocalDateTime.class})
public abstract class SPAQuoteMapper {
  
}

 @Mapper用于接口或者抽象类,重要属性解读:(1)nullValueMappingStrategy,如果源实体类的某个属性为null,映射到目标实体类的某个属性时,如何处理,有RETURN_NULL和RETURN_DEFAULT两个策略。(2)unmappedTargetPolicy,如果目标实体类中的某些属性在源实体类中无可以映射的属性,如何处理,详情参考:https://www.baeldung.com/mapstruct-ignore-unmapped-properties。(3)imports,MapStruct会自动为接口或者抽象类生成一个实现类,import相当于为实现类声明需要import的类。

3、添加映射方法

@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT, unmappedTargetPolicy = ReportingPolicy.IGNORE,imports = {LocalDateTime.class})
public abstract class SPAQuoteMapper {

 	@Mapping(source = "press.location", target = "pressDTO.place")
	@Mapping(source = "press.location", target = "pressDTO.place", qualifiedByName = "toBigDecimal")
	documentDTO documentTodocumentDTO(document entity);
	
	@Named("toBigDecimal")
	private BigDecimal changeStringToDecimal(String number) {
		return new BigDecimal(number);
	}
}

 相关实体类如下:

public class documentDTO {
    private int id;
    private String title;
    private String text;
    private PressDTO pressDTO;
    private List comments;
    private String author;
}

public class PressDTO {
    private String place;
    private String name;
    private BigDecimal assetsAmount;
}

public class document {
    private int id;
    private String title;
    private String text;
    private Press press;
    private Date modificationTime;
}

public class Press {
    private String location;
    private String name;
    private String assetsVolume;
}  

4、使用

IngressOrderMapper ingressOrderMapper = Mappers.getMapper(IngressOrderMapper.class);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425132.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号