dto转化 vo_微服务篇-DTO、VO快速转换解决方案
上一篇文章中介紹了一下什么是PO、BO、VO、DTO,以及在服務中的使用明亮:微服務篇-淺析VO、BO、 PO、 DTO?zhuanlan.zhihu.com
服務之間定義不同的POJO是為了解耦,減少維護工作量,不過pojo之間的轉換也是一個很大的工作量,工作量大在哪里呢?1、分層并將pojo分類后,pojo的數量是原來的n倍,pojo屬性調整,需修改get和set方法,會是很繁瑣的重復工作
2、pojo間轉換,兩個不同pojo需要定義轉換方法,pojo的轉換要定義不大量同的方法,pojo屬性有變動,會連鎖修改一堆的方法。
原來是為了減輕工作量,現在看來反而增加了不少工作,那怎么解決呢?我的方案是dozer + lombok
用lombok來省略get和set方法
通過dozer來實現不同pojo的轉換工作
那具體怎么做呢?(接下來的內容,手動實踐一下效果會比較好)
一、lombok的使用
首先創建一個maven項目,引入lombok,如下
org.projectlombok
lombok
1.18.8
然后給idea安裝lombok插件,如下圖
現在讓我們創建一個user類型,包含 id,name,age三個屬性,通常的寫法是這樣的
public class User {
private long id;
private String name;
private int age;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
現在可以這么寫了
@Data
public class User {
private long id;
private String name;
private int age;
}
是不是很簡單啊,感覺代碼量少了很多。如果感覺@Data太簡單暴力,也可以用@Getter和@Setter注解。
Lombok還有很多其他作用的注解@ToString 可以重寫String方法,通過of定義現實的字段
@NoArgsConstructor 可以生成無參數構造器
@AllArgsConstructor 生成帶所有參數的構造器
@RequiredArgsConstructor 生成有參數的構造器,參數需要用@NonNull注釋一下
還有很多用法,這里不做詳細的描述了,咱們現在只需要通過@Data或@Getter@Setter解決修改get和set方法的問題就可以了
那么接下來讓我們用dozer來解決類的轉換問題
二、dozer的使用
還是要先引入maven
net.sf.dozer
dozer
5.5.1
然后分別創建一個UserVo和UserDto,并對他們做轉換
首先讓兩個類的屬性名稱一樣,如下
@Data
public class UserVo {
private String name;
private int id;
}
@Data
public class UserDto {
private String name;
private int id;
}
接下來怎么轉換呢,代碼如下
Mapper dozerMapper = new DozerBeanMapper();
UserVo userVo = new UserVo();
userVo.setName("mg");
userVo.setId(10);
InUserDto userDto = dozerMapper.map(userVo,UserDto.class);
System.out.println(userDto.getName());
輸出結果為mg
UserVo轉換為UserDto,這是屬性完全相同的情況,不過通常屬性名稱都是不同的,那怎么辦呢
修改UserVo 為
@Data
public class UserVo {
private String sname;
private int sid;
}
修改UserDto為
@Data
public class UserDto {
@Mapping("sname")
private String name;
@Mapping("sid")
private int id;
}
在執行下剛寫的轉換函數,試試是否能成功轉換了
是不是很容易啊,這樣既能分別定義的VO、PO、DTO,又能快速完成開發工作了
最后需要注意下:
lombok這個插件雖然好用,不過外界他的褒貶不一,用和不用一直是熱門話題,有不少大佬不提倡使用lombok,不過我還是挺喜歡用的,實在太方便了。
更多好文章可以關注公眾號 MG驛站,聯系作者可后臺留言
相關文章
總結
以上是生活随笔為你收集整理的dto转化 vo_微服务篇-DTO、VO快速转换解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zz:使用Monkeyrunner进行A
- 下一篇: 人工智能——搜索策论2