java~modelMapper需要註意的幾點
阿新 • • 發佈:2018-05-23
const sage mapper 後者 email code div mail clas
對於modelMapper來說,主要實現的是對象與對象的賦值,在這微服務裏的數據傳輸對象中用的比較多,DTO這個對象是從業務模型抽象出來的,滿足某一種業務,它與數據持久化模型沒有關系,而如果我們把數據表模型取出後,以DTO返回給使用端時,就需要一種賦值機制,這就是modelMapper需要做的事。
在目前開發過程中,由於使用了lombok插件,使得我們減少了很多重復的代碼,它以註解的形式體現在代碼上,即@getter表示對外公司讀方法,@setter對外公開寫方法,而後者在設計時一般不對外公開,為對象的賦值一般通過@Builder來實現,但這對於modelMapper是一件壞事 ,它必須要求你公開@setter註解,才可以為你賦值,這也是可以想像的,modelMapper的機制應該就是說取所有字段 ,然後使用自己的setter方法為它賦值。
註意地址:
- 必須公開@setter註解
- DTO對象不能繼承原來的模型,應該新建一個單純的實體,因為註解是可以從父類集成下來的
@Builder(toBuilder = true) @Getter @Setter @AllArgsConstructor @NoArgsConstructor public 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需要註意的幾點