中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

java~modelMapper需要注意的幾點

對于modelMapper來說(shuo),主(zhu)要(yao)實(shi)現的是(shi)對象與對象的賦值(zhi),在這微(wei)服務(wu)里的數(shu)據傳輸(shu)對象中用的比較多(duo),DTO這個(ge)對象是(shi)從業務(wu)模(mo)型抽象出(chu)來的,滿足(zu)某一種(zhong)業務(wu),它與數(shu)據持久化模(mo)型沒有(you)關系(xi),而(er)如(ru)果我們(men)把數(shu)據表模(mo)型取出(chu)后,以(yi)DTO返回給使用端時,就需(xu)要(yao)一種(zhong)賦值(zhi)機制,這就是(shi)modelMapper需(xu)要(yao)做的事。

在目前開(kai)發過程中,由于使(shi)用了lombok插(cha)件(jian),使(shi)得(de)我們減少了很(hen)多重復的(de)代碼,它(ta)(ta)以(yi)(yi)注解的(de)形式體(ti)現在代碼上,即@getter表示對外(wai)(wai)公(gong)司讀(du)方法,@setter對外(wai)(wai)公(gong)開(kai)寫(xie)方法,而后者在設計(ji)時一般(ban)(ban)不(bu)對外(wai)(wai)公(gong)開(kai),為對象的(de)賦(fu)值(zhi)一般(ban)(ban)通過@Builder來實現,但這對于modelMapper是(shi)(shi)一件(jian)壞事 ,它(ta)(ta)必須要求你公(gong)開(kai)@setter注解,才可(ke)以(yi)(yi)為你賦(fu)值(zhi),這也是(shi)(shi)可(ke)以(yi)(yi)想像(xiang)的(de),modelMapper的(de)機制(zhi)應該(gai)就(jiu)是(shi)(shi)說(shuo)取所有字段 ,然后使(shi)用自己的(de)setter方法為它(ta)(ta)賦(fu)值(zhi)。

注意地址

  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;

}

下面(mian)是使用(yong)方法(fa),同時可以(yi)使用(yong)BeanUtils類的(de)方法(fa)也(ye)可以(yi)實現(xian)。

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);

感謝閱讀!

posted @ 2018-05-23 16:19  張占嶺  閱讀(4741)  評論(0)    收藏  舉報