为了账号安全,请及时绑定邮箱和手机立即绑定

在将 moddelmapper 与类型映射一起使用时,如何解决不兼容的类型

在将 moddelmapper 与类型映射一起使用时,如何解决不兼容的类型

慕田峪9158850 2022-12-15 11:15:05
我正在尝试将我的实体映射到我的 DTO。对于我的知识,我正在尝试不同的方法。我成功地使用了一个带有隐式映射的映射,以及一个显式映射,同时使用带有配置方法的 PropertyMap。现在我正在尝试使用 TypeMap 进行显式映射。最后一个我无法上班。连同 Modelmapper 入门,我使用了这个线程中的答案作为示例,How to use Explicit Map with Java 8 and ModelMapper?static ResponseB convertBEntityToDtoExplicitTypeMap(ModelB modelB){    ModelMapper modelMapper = new ModelMapper();    TypeMap<ModelB, ResponseB> typeMap = modelMapper.createTypeMap(ModelB.class, ResponseB.class);    typeMap.addMappings(mapping -> {        mapping.map(modelB.getId(), ResponseB::setId);        mapping.map(modelB.getBankaccountName(), ResponseB::setB);        mapping.map(modelB.isActive(), ResponseB::setActive);    });    return modelMapper.map(modelB, ResponseB.class);}上面的块是我的代码示例,它不起作用。使用 setId 我有错误:不兼容的类型:V 不可转换为 Long。setB 有错误:类型不兼容:V 不可转换为字符串。setActive 有错误:类型不兼容:V 不可转换为布尔值。我怎样才能让这个例子与 TypeMap 一起工作?
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

通过不断尝试,我自己弄明白了。


我不得不使用类而不是 mapping.map 中的对象


static ResponseB convertBEntityToDtoExplicitTypeMap(ModelB modelB){

    ModelMapper modelMapper = new ModelMapper();

    TypeMap<ModelB, ResponseB> typeMap = modelMapper.createTypeMap(ModelB.class, ResponseB.class);


    typeMap.addMappings(mapping -> {

        mapping.map(ModelB::getId, ResponseB::setId);

        mapping.map(ModelB::getBankaccountName, ResponseB::setB);

        mapping.map(ModelB::isActive, ResponseB::setActive);

    });


    return modelMapper.map(modelB, ResponseB.class);

}


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号