其他分享
首页 > 其他分享> > 对象转换小帮手mapstruct

对象转换小帮手mapstruct

作者:互联网

记得第一次看到mapstruct就被它吸引了,简直堪称对象转换神器,原先代码中需要对象之间转换,会使用BeanUtil但是它的性能不高,而且使用局限性也大,遇到不是同名的属性或者属性类型不一样就菜鸡了,遇到这种情况只能自己定义方法实现对象转换,随之而来的是一大堆的get\set简直令人发狂。有了mapstruct对生活又有了信心了。纯属开玩笑,但mapstruct真的很强,你值得拥有。

// 使用MapStruct不仅可以做到即使属性名不一样也能正常映射
// 还可以做到不同类型之间也可以做到平滑映射
// 而且还可以自定义转换规则,你说强大不强大
// 其实它的原理也很简单,在代码编译阶段就自动为我们生成了实现类,实现类里就是根据我们的映射规则做了一堆的get\set,减少了我们无用的工作,让我们只专注业务开发
@Mappings({
      @Mapping(source = "user.address.name", target = "addressName"),
      @Mapping(source = "userName", target = "nickName"),
      @Mapping(source = "balance", target = "balance", qualifiedByName="converterYuan")
})
CampaignResDTO toCampaignResDTO(Campaign campaign);

@Named("converterYuan")
default String converterYuan(Long cents) {
      if (cents != null) {
            return BigDecimal.valueOf(cents).divide(new BigDecimal(100)).setScale(2).toString();
      } else {
            return "";
      }
}

@Named("converterCents")
default Long converterCents(Double yuan) {
      DecimalFormat format = new DecimalFormat();
      format.setMaximumFractionDigits(2);
      format.setGroupingSize(0);
      format.setRoundingMode(RoundingMode.FLOOR);
      yuan = Double.valueOf(format.format(yuan))*100;
      return yuan.longValue();
}

标签:cents,帮手,转换,format,mapstruct,source,return,yuan
来源: https://www.cnblogs.com/DayangJava/p/14354536.html