日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dto转化 vo_微服务篇-DTO、VO快速转换解决方案

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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快速转换解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜精品在线观看 | 中文字幕人妻熟女在线 | 一女二男一黄一片 | 国产午夜精品在线观看 | 人妻av无码一区二区三区 | 天堂中文在线8 | 国产在线视频卡一卡二 | av色噜噜| 美女网站黄页 | 久久久久久亚洲中文字幕无码 | 日本三级中国三级99人妇网站 | 国产一区二区三区四区精 | 黑人粗进入欧美aaaaa | 在线观看第一页 | 精品不卡在线 | 成人爽站w47pw | 欧美日韩中文字幕在线视频 | 网站毛片| 国产精品女同一区二区 | 亚洲天堂中文在线 | 在线视频h | 黑人操欧美人 | 在线播放亚洲精品 | 精品国产乱码久久久久久1区二区 | 激情视频在线观看免费 | 精品视频免费在线 | 中国少妇初尝黑人巨大 | 一区成人| 国产小视频你懂的 | 国产精品久久综合 | 手机av不卡 | 国产视频一区二区三区四区 | 欧美成人aa | 另类捆绑调教少妇 | 亲嘴脱内衣内裤 | 欧美区在线 | 中文字幕国产一区 | 日本wwwxxx| 青青视频免费观看 | 激情欧美一区二区三区 | 精品成人一区二区三区 | 91福利视频网 | 最新视频 - 8mav | 视频一区二区在线 | 97潮色 | 日韩国产91 | 神马久久网站 | 久久亚洲在线 | 香港三日本三级少妇66 | 欧美三级午夜理伦三级 | 超碰97在线免费观看 | 精品国产免费人成在线观看 | 96亚洲精品久久久蜜桃 | 欧美日韩中文字幕视频 | 亚洲精品视 | 亚洲国产日韩a在线播放性色 | 国产又粗又猛又爽又黄的视频小说 | 日韩一区在线看 | 国产白浆在线 | 国模杨依粉嫩蝴蝶150p | 日韩精品视频在线观看免费 | 日韩中文字幕电影 | 无码人妻精品一区二区蜜桃网站 | 日韩欧美国产一区二区三区在线观看 | 91浏览器在线观看 | 国产夜夜嗨 | 911美女片黄在线观看游戏 | av大西瓜| 男人看片网站 | 日本三级一区二区三区 | 可以免费看的黄色 | 鲁丝一区二区 | 中文字幕av网址 | 欧美一区二区三区免费 | 国产传媒在线 | 99国产精品人妻噜啊噜 | 99热8| 毛片毛片| 久久婷婷综合色丁香五月 | 好屌妞视频这里只有精品 | 国产第2页 | 久久久啊啊啊 | 大地资源二中文在线影视观看 | 欧美黑人又粗又大又爽免费 | 久久久无码人妻精品无码 | 日本午夜一区二区三区 | 日日夜精品 | 国产蜜臀av一区二区 | 久在线视频 | 国模无码视频一区 | 正在播放超嫩在线播放 | 搞逼综合网 | 中文字幕av在线播放 | 亚洲中文字幕一区 | 国产又粗又猛又爽又黄的网站 | 91亚洲精品久久久蜜桃 | 日韩婷婷 | 高潮白浆 | 狠狠操导航 |