MapStruct 映射工具

# MapStruct 映射工具  本篇主要講解MapStruct 一款映射工具,只需簡單的定義一個Mapper接口,在編譯期間,MapStruct將生成此接口的實現,聽說MapStruct性能最高是Spring的CopyProperties的10倍,與手工編寫映射代碼相比,MapStruct經過生成繁瑣且易於編寫的代碼來節省時間。遵循約定優於配置方法,MapStruct使用合理的默認值,但在配置或實現特殊行爲時會採起措施。 ###  1.引入MapStruct的依賴 org.mapstruct mapstruct-jdk8 1.3.0.Final org.mapstruct mapstruct-processor 1.3.0.Final ###  2.使用MapStruct ####   2.1 建立實體Entity @Data @Entity @EntityListeners(AuditingEntityListener.class) public class BlogInfo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; /** * 博客標題 */ @Field(analyzer = "ik_max_word" , type = FieldType.Text , searchAnalyzer = "ik_max_word") private String blogTitle; /** * 博客內容 */ @Column(columnDefinition = "text") private String blogContent; /** * 博客簡要 */ private String blogShortContent; } ####   2.2 建立Vo對象或者DTO對象 @Data @Accessors(chain = true) public class BlogInfoVo { private Long id; /** * 博客標題 */ private String blogTitle; /** * 博客內容 */ private String blogContent; /** * 博客簡要 */ private String blogShortContent; } ####   2.3 建立一個Mapper接口   1.類名上面添加@Mapper註解,使用Mybatis的小夥伴要注意導入的是MapStruct的@Mapper 不要混淆   2.寫上轉化方法,若是有屬性 字段 或者 類型 不一樣能夠使用 @Mappings指定   3.當須要從字符串Date轉成日期Date時候須要提供一個 uses = DateMapper.class /** * Media Converter * * @author johnny * @create 2019-11-08 上午11:20 **/ @Mapper(uses = DateMapper.class ) public interface BlogInfoConverter { BlogInfoConverter INSTANCE = Mappers.getMapper(BlogInfoConverter.class); @Mappings({ @Mapping(source = "createDate", target = "createDate" ,dateFormat = "yyyy-MM-dd"), //表示從BlogInfo的createDate 轉成 BlogInfoVo的createDate 使用 yyyy-MM-dd進行轉換 @Mapping(source = "createTime" , target = "createTime" , dateFormat = "yyyy-MM-dd"), @Mapping(target = "anchors" , ignore = true) }) BlogInfoVo domain2vo(BlogInfo blogInfo); //這裏包含 從String類型的Date轉換成日期類型的Date,就須要使用 uses=DateMapper.class BlogInfo vo2domain(BlogInfoVo blogInfoVo); }   貼出來:能夠直接粘貼使用   DateMapper public class DateMapper { public String asString(Date date) { return date != null ? new SimpleDateFormat("yyyy-MM-dd") .format(date) : null; } public Date asDate(String date) { try { return date != null ? new SimpleDateFormat("yyyy-MM-dd") .parse(date) : null; } catch (ParseException e) { throw new RuntimeException(e); } } } ####   2.4 調用   BlogInfoConverter.INSTANCE.domain2vo @Override public List queryByTypeId(Integer typeId) { List list = new ArrayList<>(); blogInfoRepository.findByBlogTypeId(typeId).stream().forEach(blogInfo -> { list.add(BlogInfoConverter.INSTANCE.domain2vo(blogInfo)); }); return list; } ###  總結   **本篇主要講解MapStruct的基本使用方法,裏面的不少其餘的用法我也還沒深刻探究,不過我本是很喜歡使用MapStruct的** > 我的博客地址: https://www.askajohnny.com 歡迎訪問! > 本文由博客一文多發平臺 [OpenWrite](https://openwrite.cn?from=article_bottom) 發佈!
相關文章
相關標籤/搜索