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

MapStruct 实例 ----自用

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

MapStruct 实例 ----自用

还要两天就是春节了,还在上班且大年初一要值班的我提前祝大家新年快乐 

原理固然很重要,实用最是重要

      为安全涉及敏感信息的全替换了,领会精神即可,主要写给自己看

target是SkuInfo,要转的对象

source是参数,被转的对象,源于谁

expression表达式,多用java,这里

com.test.test.test.test.enums.test.PluTypeEnum.SOLID相信大家可以猜到(我给自己看的,cue你们干什么)一看就是全路径,不需要单独处理的可以参考第一行
@Mapping(target = "sectionCode", source = "deptNo")
@Mapping(target = "solid", expression = "java(pluBO.getPluType() != null && pluBO.getPluType() == com.megvii.lbg.fr.wes.enums.warebasic.PluTypeEnum.SOLID.getType())")
SkuInfo toAlgoSkuInfo(PluBO pluBO);

第二弹
 @Mapping(
            target = "list",
            expression =
                    "java(order.getList().stream().map(test -> test.getId()).collect(java.util.stream.Collectors.joining(",")))"
    )
 @Mapping(target = "operator", source = "createBy")
 VO toVO(Order order);
会转成:全路径请注意下,要考
VO.setList( order.getList().stream().map(test -> test.getId()).collect(java.util.stream.Collectors.joining(",")) );

list转map肿磨拌?类中写方法

ps:方法大概是这么个架子,方法名convertFooListToMap不能改,里面的流式处理我瞎写滴

default Map convertFooListToMap(List list) {
        return list.stream()
                .collect(Collectors.groupingBy(DO::getSkuCode,
                        Collectors.reducing(0, DO ->
                                DO.getQty() - DO.getCancelQty(), Integer::sum)));
    }

list转list,一般都是for循环借助单个类的转换,如果单个类的转换想自定义,怎么办

List toAlgoStock(List list);

default Info toAlgoStock(Do test) {
      //do some thing by yourself
}

指定时区,说到这个,气得我哟

//test是Bo的一个属性,这里为属性的属性赋值,这里指定了8小时
@Mapping(target = "test.source", constant = "10")
@Mapping(target = "test.desArea", expression = "java(entry.getValue().get(0).getDesArea())")
@Mapping(target = "test.orderCreateAt", expression = "java(java.time.LocalDateTime.ofEpochSecond(entry.getValue().get(0).getCreateDt(), 0, java.time.ZoneOffset.ofHours(8)))")
Bo mapOutboundOrderByMapEntry(Map.Entry> entry);


//也可以指定时区,注意全路径
@Mapping(target = "expectAt", expression = "java(java.time.LocalDateTime.ofInstant(test.getExpectAt().toInstant(), java.time.ZoneId.of( "GMT+8" )))")
VO toVo(Test test);

自增值,可以借助全路径调自己的方法

@Mapping(target = "info", expression = "java(com.test.test.test.test.utils.IDCreatorUtil.getRequestId())")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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