java~modelMapper需要注意的幾點

來源:互聯網
上載者:User

標籤:color   one   cto   父類   多重   email   要求   price   model   

對於modelMapper來說,主要實現的是對象與對象的賦值,在這微服務裡的資料轉送對象中用的比較多,DTO這個對象是從業務模型抽象出來的,滿足某一種業務,它與資料持久化模型沒有關係,而如果我們把資料表模型取出後,以DTO返回給使用端時,就需要一種賦值機制,這就是modelMapper需要做的事。

在目前開發過程中,由於使用了lombok外掛程式,使得我們減少了很多重複的代碼,它以註解的形式體現在代碼上,即@getter表示對外公司讀方法,@setter對外公開寫方法,而後者在設計時一般不對外公開,為對象的賦值一般通過@Builder來實現,但這對於modelMapper是一件壞事 ,它必須要求你公開@setter註解,才可以為你賦值,這也是可以想像的,modelMapper的機制應該就是說取所有欄位 ,然後使用自己的setter方法為它賦值。

注意地址

  1. 必須公開@setter註解
  2. DTO對象不能繼承原來的模型,應該建立一個單純的實體,因為註解是可以從父類整合下來的
@Builder(toBuilder = true)@Getter@Setter@AllArgsConstructor@NoArgsConstructorpublic class UserDto {  private String name;}

下面是資料模型

@Builder(toBuilder = true)@Getter@NoArgsConstructor@AllArgsConstructorpublic 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);

感謝閱讀!

java~modelMapper需要注意的幾點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.