还要两天就是春节了,还在上班且大年初一要值班的我提前祝大家新年快乐
原理固然很重要,实用最是重要
为安全涉及敏感信息的全替换了,领会精神即可,主要写给自己看
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 MapconvertFooListToMap(List list) { return list.stream() .collect(Collectors.groupingBy(DO::getSkuCode, Collectors.reducing(0, DO -> DO.getQty() - DO.getCancelQty(), Integer::sum))); }
list转list,一般都是for循环借助单个类的转换,如果单个类的转换想自定义,怎么办
ListtoAlgoStock(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())")



