针对cource3,mapstruct一直只生成没有变量赋值的代码,应该如何处理?

来源:4-23 【基础补充】MapStruct数据类型转换

慕盖茨0002275

2024-03-13


初步解决了,但较奇怪的是,我是通过注释掉@Mapper,然后clean,再解开注释Mapper就可以了,这是什么原理哈?


老师,针对cource3这个mapstruct 一直生成这个代码,然后就是一直都是null,clean之后运行也还是这样,应该如何处理?

public class MetadataCopierImpl implements MetadataCopier {

    @Override
    public Metadata3 copy(DataCenterMetadata3 metadata) {
        if ( metadata == null ) {
            return null;
        }

        Metadata3 metadata3 = new Metadata3();

        return metadata3;
    }
}

Metadata3

@Slf4j
@Data
@NoArgsConstructor
public class Metadata3 implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 指标规则主键id

     */
    private Long ruleId;
    /**
     * 指标英文标识
     */
    private String enName;

}

DataCenterMetadata3

@Data
@NoArgsConstructor
@Accessors(chain = true)
public class DataCenterMetadata3 implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId
	private Long id;
    /**
     * 指标规则主键id

     */
    private int ruleId;
    /**
     * 指标英文标识
     */
    private Integer enName;

}

MetadataCopier
目前遇到的问题就是需要是不是重新注释一下这个@Mapper,不然会报错

// 用输入输出类型自动判断
//@Mapper(uses = DateMapper.class)
public interface MetadataCopier {

//    @Mapping(source = "myDate", target = "myDate", dateFormat = "yyyyMMdd HH:mm:ss")
    @Mapping(source = "createTime", target = "createTime", dateFormat = "yyyy/MM/dd HH:mm:ss")
    @Mapping(source = "priceMax", target = "priceMax", numberFormat = "#.##E0")
    @Mapping(source = "price", target = "price", numberFormat = "$#.00")
    Metadata3 copy(DataCenterMetadata3 metadata);

    MetadataCopier INSTANCE = Mappers.getMapper(MetadataCopier.class);
}

写回答

2回答

Tim老师

2024-03-14

同学,你这个解决方式我不太清楚,但是回归到本质,就是每次clean之后编译,你去看下根据接口生成的impl代码,一定能很清楚知道原因。
0
1
慕盖茨0002275
嗯嗯,目前第一个代码就是impl的代码,不知为啥就是没有生成复制的语句。不过目前可以通过注释@Mapper来解决哈。
2024-03-16
共1条回复

Tim老师

2024-03-13

同学,需要你在mapstruct接口里面加上source和 target的映射关系,ruleId和id,然后enName两个数据类型不一致,需要在接口加默认方法处理。这些课程都有讲过的,这几个场景课程里面有一模一样的,仔细看看视频
0
2
Tim老师
回复
慕盖茨0002275
这个我倒没遇到过,但是idea有时候确实会抽风,偶尔需要重启之类的倒是有
2024-03-16
共2条回复

SpringBoot3.0 + RocketMq 构建企业级数据中台

SpringBoot3.0 + RocketMq 构建企业级数据中台

201 学习 · 63 问题

查看课程