zoukankan      html  css  js  c++  java
  • java~modelMapper需要注意的几点

    对于modelMapper来说,主要实现的是对象与对象的赋值,在这微服务里的数据传输对象中用的比较多,DTO这个对象是从业务模型抽象出来的,满足某一种业务,它与数据持久化模型没有关系,而如果我们把数据表模型取出后,以DTO返回给使用端时,就需要一种赋值机制,这就是modelMapper需要做的事。

    在目前开发过程中,由于使用了lombok插件,使得我们减少了很多重复的代码,它以注解的形式体现在代码上,即@getter表示对外公司读方法,@setter对外公开写方法,而后者在设计时一般不对外公开,为对象的赋值一般通过@Builder来实现,但这对于modelMapper是一件坏事 ,它必须要求你公开@setter注解,才可以为你赋值,这也是可以想像的,modelMapper的机制应该就是说取所有字段 ,然后使用自己的setter方法为它赋值。

    注意地址

    1. 必须公开@setter注解
    2. DTO对象不能继承原来的模型,应该新建一个单纯的实体,因为注解是可以从父类集成下来的
    @Builder(toBuilder = true)
    @Getter
    @Setter
    @AllArgsConstructor
    @NoArgsConstructor
    public class UserDto {
      private String name;
    }

    下面是数据模型

    @Builder(toBuilder = true)
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    public class UserInfo {
      private String name;
      private String email;
      @MinMoney(message = "金额不能小于0.")
      @MaxMoney(value = 10, message = "金额不能大于10.")
      private Money price;
    
    }

    下面是使用方法,同时可以使用BeanUtils类的方法也可以实现。

    modelMapper方法

      ModelMapper modelMapper = new ModelMapper();        
      userDto = modelMapper.map(userinfo, UserDto.class); 

    BeanUtils方法

     UserInfo userinfo= UserInfo.builder().name("zzl").build();
     UserDto userDto=new UserDto();
     BeanUtils.copyProperties(userinfo,userDto);

    感谢阅读!

  • 相关阅读:
    LINQ篇:ASP.NET using LINQ(Part One) Scott大师的产物
    运算符重载 operator+[纯属温习啊][附加了一些内容 如:同名属性,复制构造函数]
    Vista中低端电脑如何打开Aero效果或者就是3D效果
    基于可配置化的设计[原创][4.20更新]
    Treeview控件如何在asp.net ajax中使用小技巧
    PetShop 4.0 系列之四 [转]
    XML篇查询语言XPath
    抽象工厂模式[转]
    何时使用委托而不使用接口
    DNN开篇第一话
  • 原文地址:https://www.cnblogs.com/lori/p/9077470.html
Copyright © 2011-2022 走看看