色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PO VO DTO轉(zhuǎn)換神器的思路

Linux愛好者 ? 來源:今日頭條 ? 作者:bettermann ? 2021-10-12 11:13 ? 次閱讀

當然有的人喜歡寫get set,或者用BeanUtils 進行復(fù)制,代碼只是工具,本文只是提供一種思路。

pom 配置:

<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<org.mapstruct.version>1.4.1.Finalorg.mapstruct.version>
<org.projectlombok.version>1.18.12org.projectlombok.version>
properties>

<dependencies>
<dependency>
<groupId>org.mapstructgroupId>
<artifactId>mapstructartifactId>
<version>${org.mapstruct.version}version>
dependency>


<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>${org.projectlombok.version}version>
<scope>providedscope>
dependency>


<dependency>
<groupId>org.mapstructgroupId>
<artifactId>mapstruct-processorartifactId>
<version>${org.mapstruct.version}version>
<scope>providedscope>
dependency>

dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.1version>
<configuration>
<source>1.8source>
<target>1.8target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>${org.projectlombok.version}version>
path>
<path>
<groupId>org.mapstructgroupId>
<artifactId>mapstruct-processorartifactId>
<version>${org.mapstruct.version}version>
path>
annotationProcessorPaths>
configuration>
plugin>
plugins>
build>

關(guān)于lombok和mapstruct的版本兼容問題多說幾句,maven插件要使用3.6.0版本以上、lombok使用1.16.16版本以上,另外編譯的lombok mapstruct的插件不要忘了加上。否則會出現(xiàn)下面的錯誤:No property named "aaa" exists in source parameter(s). Did you mean "null"?

這種異常就是lombok編譯異常導(dǎo)致缺少get setter方法造成的。還有就是缺少構(gòu)造函數(shù)也會拋異常。

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
publicclassStudent{

privateStringname;
privateintage;
privateGenderEnumgender;
privateDoubleheight;
privateDatebirthday;

}
publicenumGenderEnum{
Male("1","男"),
Female("0","女");

privateStringcode;
privateStringname;

publicStringgetCode(){
returnthis.code;
}

publicStringgetName(){
returnthis.name;
}

GenderEnum(Stringcode,Stringname){
this.code=code;
this.name=name;
}
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
publicclassStudentVO{
privateStringname;
privateintage;
privateStringgender;
privateDoubleheight;
privateStringbirthday;
}
@Mapper
publicinterfaceStudentMapper{

StudentMapperINSTANCE=Mappers.getMapper(StudentMapper.class);

@Mapping(source="gender.name",target="gender")
@Mapping(source="birthday",target="birthday",dateFormat="yyyy-MM-ddHHss")
StudentVOstudent2StudentVO(Studentstudent);

}

實體類是開發(fā)過程少不了的,就算是用工具生成肯定也是要有的,需要手寫的部分就是這個Mapper的接口,編譯完成后會自動生成相應(yīng)的實現(xiàn)類

然后就可以直接用mapper進行實體的轉(zhuǎn)換了

publicclassTest{

publicstaticvoidmain(String[]args){

Studentstudent=Student.builder().name("小明").age(6).gender(GenderEnum.Male).height(121.1).birthday(newDate()).build();
System.out.println(student);
//這行代碼便是實際要用的代碼
StudentVOstudentVO=StudentMapper.INSTANCE.student2StudentVO(student);
System.out.println(studentVO);

}

}

mapper可以進行字段映射,改變字段類型,指定格式化的方式,包括一些日期的默認處理。

可以手動指定格式化的方法:

@Mapper
publicinterfaceStudentMapper{

StudentMapperINSTANCE=Mappers.getMapper(StudentMapper.class);

@Mapping(source="gender",target="gender")
@Mapping(source="birthday",target="birthday",dateFormat="yyyy-MM-ddHHss")
StudentVOstudent2StudentVO(Studentstudent);

defaultStringgetGenderName(GenderEnumgender){
returngender.getName();
}

}

上面只是最簡單的實體映射處理,下面介紹一些高級用法

1.List 轉(zhuǎn)換

屬性映射基于上面的mapping配置

@Mapper
publicinterfaceStudentMapper{

StudentMapperINSTANCE=Mappers.getMapper(StudentMapper.class);

@Mapping(source="gender.name",target="gender")
@Mapping(source="birthday",target="birthday",dateFormat="yyyy-MM-ddHHss")
StudentVOstudent2StudentVO(Studentstudent);


Liststudents2StudentVOs(ListstudentList);

}
publicstaticvoidmain(String[]args){

Studentstudent=Student.builder().name("小明").age(6).gender(GenderEnum.Male).height(121.1).birthday(newDate()).build();

Listlist=newArrayList<>();
list.add(student);
Listresult=StudentMapper.INSTANCE.students2StudentVOs(list);
System.out.println(result);
}

2.多對象轉(zhuǎn)換到一個對象

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
publicclassStudent{

privateStringname;
privateintage;
privateGenderEnumgender;
privateDoubleheight;
privateDatebirthday;

}
@Data
@AllArgsConstructor
@Builder
@NoArgsConstructor
publicclassCourse{

privateStringcourseName;
privateintsortNo;
privatelongid;

}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
publicclassStudentVO{
privateStringname;
privateintage;
privateStringgender;
privateDoubleheight;
privateStringbirthday;
privateStringcourse;
}
@Mapper
publicinterfaceStudentMapper{

StudentMapperINSTANCE=Mappers.getMapper(StudentMapper.class);

@Mapping(source="student.gender.name",target="gender")
@Mapping(source="student.birthday",target="birthday",dateFormat="yyyy-MM-ddHHss")
@Mapping(source="course.courseName",target="course")
StudentVOstudentAndCourse2StudentVO(Studentstudent,Coursecourse);

}
publicclassTest{

publicstaticvoidmain(String[]args){

Studentstudent=Student.builder().name("小明").age(6).gender(GenderEnum.Male).height(121.1).birthday(newDate()).build();
Coursecourse=Course.builder().id(1L).courseName("語文").build();

StudentVOstudentVO=StudentMapper.INSTANCE.studentAndCourse2StudentVO(student,course);
System.out.println(studentVO);
}

}

3.默認值

@Mapper
publicinterfaceStudentMapper{

StudentMapperINSTANCE=Mappers.getMapper(StudentMapper.class);

@Mapping(source="student.gender.name",target="gender")
@Mapping(source="student.birthday",target="birthday",dateFormat="yyyy-MM-ddHHss")
@Mapping(source="course.courseName",target="course")
@Mapping(target="name",source="student.name",defaultValue="張三")
StudentVOstudentAndCourse2StudentVO(Studentstudent,Coursecourse);

}

	

		

轉(zhuǎn)自:toutiao.com/i6891531055631696395

責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    27

    文章

    8734

    瀏覽量

    147498
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4803

    瀏覽量

    68777
收藏 人收藏

    評論

    相關(guān)推薦

    TI_SN74LVC2G125DCUR為什么會有兩個Vo輸出,每個都代表什么意思?

    如上圖紅色圓圈部分,為什么會有兩個Vo輸出,每個都代表什么意思?以及為什么沒有在手冊中看到關(guān)于輸入阻抗?
    發(fā)表于 01-07 08:15

    BUCK電路占空比對轉(zhuǎn)換效率的影響

    周期T_SW的比例,計算公式為D=T_ON/T_SW。在BUCK電路中,占空比D還可以根據(jù)伏秒積平衡原理計算,即VIN*TON=VO*TOFF,從而得出D=Vo/Vin(在忽略開關(guān)管和電感等元件的壓降時)。這里的Vo是輸出電壓,
    的頭像 發(fā)表于 12-12 15:39 ?797次閱讀

    用TPA2005D1搭了一個音頻放大電路,在測輸出端Vo+和Vo-的波形時,發(fā)現(xiàn)有雜波,怎么去除?

    最近用TPA2005D1搭了一個音頻放大電路,試了一下,功能可以了,但是在測輸出端Vo+和Vo-的波形時,發(fā)現(xiàn)有雜波,電路圖和波形圖在下面,請知道的大神幫忙分析一下,怎么去雜波??
    發(fā)表于 10-21 08:11

    監(jiān)控平臺設(shè)計思路

    電子發(fā)燒友網(wǎng)站提供《監(jiān)控平臺設(shè)計思路.pptx》資料免費下載
    發(fā)表于 10-09 11:18 ?0次下載

    用OPA27做同相加法器Vo=Vi1+Vi2時遇到的疑問求解

    用OPA27做同相加法器Vo=Vi1+Vi2的時候,函數(shù)發(fā)生器給Vi1輸入頻率為1kHZ,Vpp=1V的正弦波,而Vi2接地時,沒有輸出。然后稍作改動,成了Vo=-(Vi1+Vi2),如下圖所示
    發(fā)表于 09-12 06:31

    PGA204的1管腳和9管腳沒有用到(Vo1,Vo2),布線時應(yīng)該如何布線?

    PGA204的1管腳和9管腳沒有用到(Vo1,Vo2),布線時應(yīng)該如何布線,是直接懸空還還是接AGND或者是VCC呢?
    發(fā)表于 08-28 08:20

    為什么LM324在測試失調(diào)電壓和失調(diào)電流時要Vo=1.4V,有什么依據(jù)嗎?

    為什么LM324在測試失調(diào)電壓和失調(diào)電流時要Vo=1.4V,有什么依據(jù)嗎
    發(fā)表于 08-02 09:32

    THS4509運放給+5V單電源供電,請問輸出電壓Vo+ - Vo-最大能輸出多少V?

    你好,請問這款運放給+5V單電源供電,請問輸出電壓Vo+ - Vo-最大能輸出多少V?
    發(fā)表于 08-01 08:16

    4G5G手機信號屏蔽器:手機信號“靜音”神器

    深圳特信電子|4G5G手機信號屏蔽器:手機信號“靜音”神器
    的頭像 發(fā)表于 07-02 08:51 ?619次閱讀

    RK3588 在使用rockit接口設(shè)置vo時,UI消失,大家遇到過嗎?

    使用RK3588,先通過vo顯示出來了UI,然后希望通過vo輸出解碼的視頻,在設(shè)置vo時,在調(diào)用RK_MPI_VO_GetPubAttr接口,UI直接消失,所在進程依然運行
    發(fā)表于 06-11 17:59

    LabVIEW控制單列表滾動條

    最近寫程序用到一個文件顯示的列表,每次文件更新列表都不會顯示到最新的一個。來論壇看了一下,有些朋友已經(jīng)說出了解決的方法,但是沒有一個直觀的程序,這里我po一個自己的程序。關(guān)鍵的思路時使用列表的toprow屬性節(jié)點
    發(fā)表于 04-07 16:48

    基于VO2憶阻器的無線物聯(lián)網(wǎng)混合系統(tǒng)

    針對此問題,北京大學(xué)集成電路學(xué)院/集成電路高精尖創(chuàng)新中心的楊玉超教授團隊首次提出以VO2 憶阻器為主體的高一致性、可校準的頻率振蕩器,在此基礎(chǔ)上構(gòu)建了8×8的VO2 憶阻器陣列,通過緊湊設(shè)計的外圍電路實現(xiàn)了頻率現(xiàn)場生成和可編程頻率混合系統(tǒng)。
    的頭像 發(fā)表于 02-22 09:30 ?730次閱讀

    VO2750 蓄電池放電測試儀使用說明書

    電子發(fā)燒友網(wǎng)站提供《VO2750 蓄電池放電測試儀使用說明書.pdf》資料免費下載
    發(fā)表于 02-01 10:09 ?0次下載

    工業(yè)自動化協(xié)議轉(zhuǎn)換網(wǎng)關(guān)BL121PO PLC To OPC UA 網(wǎng)關(guān)產(chǎn)品介紹

    電子發(fā)燒友網(wǎng)站提供《工業(yè)自動化協(xié)議轉(zhuǎn)換網(wǎng)關(guān)BL121PO PLC To OPC UA 網(wǎng)關(guān)產(chǎn)品介紹.pdf》資料免費下載
    發(fā)表于 01-26 14:36 ?0次下載

    介紹一款基于java的滲透測試神器-CobaltStrike

    Cobalt Strike是一款基于java的滲透測試神器,常被業(yè)界人稱為CS神器
    的頭像 發(fā)表于 01-16 09:16 ?1024次閱讀
    介紹一款基于java的滲透測試<b class='flag-5'>神器</b>-CobaltStrike
    主站蜘蛛池模板: 国产综合无码一区二区色蜜蜜| 九九热视频免费观看| 免费韩伦影院在线观看| 东北嫖妓对白粗口| 伊人免费在线| 偷拍国产精品在线播放| 久久亚洲电影www电影网| 中文字幕偷乱免费视频在线| 日韩一区二区三区射精| 久久只有这里有精品4| 国产女人乱人伦精品一区二区| a级成人免费毛片完整版| 吃奶吸咪咪动态图| 99re8热视频这在线视频| 亚洲国产日韩制服在线观看| 久久国产免费一区二区三区| 2022久久精品国产色蜜蜜麻豆| 男女亲吻摸下面吃奶视频| 精品 在线 视频 亚洲| 国产高清视频青青青在线| yy8090韩国理伦片在线| 99精品视频在线| 2021乱码精品公司| 一本道的mv中文字幕| 欧美成人猛片aaaaaaa| 久久久久久久伊人电影| 国产在线精品亚洲第一区| 佐山爱痴汉theav| 亚洲伊人色| 欧美性最猛xxxx在线观看视频| 久久青草费线频观看国产| 精品人妻一区二区三区视频53| write as 跳蛋| 中国国产不卡视频在线观看| 亚洲人成www在线播放| 亚洲精品久久久久中文字幕二区| 天天狠狠色综合图片区| 色欲人妻无码AV精品一区二区| 青青青青草| 青春草久久| 日韩av无码在线直播|