【问题标题】:Updating entity using model mapper使用模型映射器更新实体
【发布时间】:2022-08-14 19:27:08
【问题描述】:

我对模型映射器有一个奇怪的问题。可能我误解了它是如何工作的。 我有什么:一个示例模型类:

class Model{
 String name;
 String surname;
 Integer age;
 ...and much much more

还有一个方法

private void foo(){
        ModelMapper modelMapper = new ModelMapper();
        Model model = Model.builder().name(\"foo\").surname(\"bar\").age(23).build();
        Model newModel = Model.builder().name(\"john\").build();
        modelMapper.map(newModel, model);
        System.out.println(model.toString());
}

输出为:Model(name=john, surname=null, age=null) 但我期望Model(name=john, surname=bar, age=23) 我可以使用模型映射器来做到这一点吗?如果没有,如何轻松做到这一点(我不想手动更新每个属性)?谢谢。

    标签: java modelmapper


    【解决方案1】:

    您可以使用 Lombok builder @Builder.Default 轻松完成此操作您只需要更新您的 Model 类

    public class Model {
        @Builder.Default
        String name = "foo";
        @Builder.Default
        String surname = "bar";
        @Builder.Default
        Integer age = 23;
    

    【讨论】:

      【解决方案2】:

      是的,您误解了它的工作原理:它在您的情况下效果很好。它也在映射空值。如果您不希望这样,您可以在专用于 ModelMapper 的 Spring Configuration 类中使用该代码:

      @Bean
      public ModelMapper modelMapper() {
          ModelMapper modelMapper = new ModelMapper();
          modelMapper.getConfiguration()
                  .setFieldAccessLevel(Configuration.AccessLevel.PRIVATE)
                  .setMatchingStrategy(MatchingStrategies.STANDARD)
                  .setSkipNullEnabled(false);
          return modelMapper;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多