请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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


初步解决了,但较奇怪的是,我是通过注释掉@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);
}

正在回答 回答被采纳积分+3

2回答

Tim老师 2024-03-14 07:45:50
同学,你这个解决方式我不太清楚,但是回归到本质,就是每次clean之后编译,你去看下根据接口生成的impl代码,一定能很清楚知道原因。
0 回复 有任何疑惑可以回复我~
  • 提问者 慕盖茨0002275 #1
    嗯嗯,目前第一个代码就是impl的代码,不知为啥就是没有生成复制的语句。不过目前可以通过注释@Mapper来解决哈。
    回复 有任何疑惑可以回复我~ 2024-03-16 20:23:14
Tim老师 2024-03-13 22:56:47
同学,需要你在mapstruct接口里面加上source和 target的映射关系,ruleId和id,然后enName两个数据类型不一致,需要在接口加默认方法处理。这些课程都有讲过的,这几个场景课程里面有一模一样的,仔细看看视频
0 回复 有任何疑惑可以回复我~
  • 提问者 慕盖茨0002275 #1
    嗯嗯,好的。我看了代码ruleId名字是一样的,id也是一样的,就是会出现这些字段不会生成复制的代码。而且有时候之前编译过的代码,过段时间重新编译之后又会报错,只能重新注释@Mapper才又可以,这个比较奇怪哈,谢谢您
    回复 有任何疑惑可以回复我~ 2024-03-16 20:20:32
  • Tim老师 回复 提问者 慕盖茨0002275 #2
    这个我倒没遇到过,但是idea有时候确实会抽风,偶尔需要重启之类的倒是有
    回复 有任何疑惑可以回复我~ 2024-03-16 20:24:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信