国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - MapStruct處理Java中實體與模型間不匹配屬性轉換的方法

MapStruct處理Java中實體與模型間不匹配屬性轉換的方法

2021-07-22 15:35cj96248 Java教程

今天小編就為大家分享一篇關于MapStruct處理Java中實體與模型間不匹配屬性轉換的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

摘要: 前面介紹了mapstrut簡單用法,mapstrut的最重要的特點就是處理java中實體與模型間不匹配屬性的轉換。

實體模型

有一個user對象:

?
1
2
3
4
5
6
7
public class user {
  private integer id;
  private string name;
  private double account;
  private boolean married;
// setters, getters, tostring()
}

有一個employee 對象:

?
1
2
3
4
5
6
7
public class employee {
  private int id;
  private string ename;
  private string position;
  private string married;
// setters, getters, tostring()
}

業務場景

  • 需要user 與employee 對象之間轉換。
  • user 的name屬性對應employee 的ename屬性,其取值相同,類型相同,名稱不同
  • user 的married屬性(取值true和false)對應employee 的married屬性(取值y和n),其取值不同,類型不同,名稱相同。

分析與實現

最愚蠢的方式是自己寫一堆的setter方法與getter方法,大量get/set代碼堆積,增加了代碼長度和閱讀代碼的難度。利用工具beanutils是可以處理第一個需求的,但第三種需求就無能為力了。這時mapstrut就派上用場了,最簡單的配置可以像下面這樣:

?
1
2
3
4
5
6
@mapper
public interface usermapper {
  usermapper instance = mappers.getmapper(usermapper.class);
  employee usertoemployee(user user);
  user employeetouser(employee employee);
}

對于第二個需求,可以通過下面方式實現,注解@mapping可以指定需要把哪個字段source轉換為哪個字段target

?
1
2
3
4
5
6
7
8
9
10
11
12
@mapper
public interface usermapper {
  usermapper instance = mappers.getmapper(usermapper.class);
  @mappings({
    @mapping(source="name", target="ename")
  })
  employee usertoemployee(user user);
  @mappings({
    @mapping(source="ename", target="name")
  })
  user employeetouser(employee employee);
}

第三個需求有點變態,但是真實發生在我們的項目中,實現起來確實繁瑣一些:

首先,自定義轉化邏輯,布爾值到字符串,布爾的true對應字符串的y,布爾的false對應字符串的n:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class usertransform {
  public string booleantostring(boolean value){
    if(value){
      return "y";
    }
    return "n";
  }
  public boolean strtoboolean(string str){
    if ("y".equals(str)) {
      return true;
    }
    return false;
  }
}

使用很簡單,在接口的注解mapper添加uses參數,值就是需要剛才的轉換邏輯類。

?
1
2
@mapper(uses = usertransform.class)
public interface usermapper {...}

結果與分析

用junit test寫兩個測試方法,分別測試user 對象轉換employee ,employee 對象轉換user。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class midtest {
  @test
  public void midtest(){
    user user = new user();
    user.setid(125);
    user.setname("lee");
    user.setmarried(true);
    employee e = usermapper.instance.usertoemployee(user);
    system.out.println(e);
  }
  @test
  public void midtest2(){
    employee e = new employee();
    e.setid(222);
    e.setename("chao");
    e.setmarried("n");
    user u = usermapper.instance.employeetouser(e);
    system.out.println(u);
  }
}

結果如下:

user [id=222, name=chao, account=0.0, married=false]
employee [id=125, ename=lee, position=null, married=y]

轉換結果符合預期,轉化期間不存在的屬性,有了默認值(account和position),包裝類也能識別(int和integer),從自動生成的usermapperimpl.java中,可以看到,

employee.setmarried( usertransform.booleantostring( user.ismarried() ) );,用到了剛才自定義的轉換邏輯。第三種需求是很少的,但是遇到了也是很難解決的,mapstruct的自定義函數確實方便不少,不過與其他的轉換工具相比,上手難度確實大,配置也稍顯繁瑣。

項目代碼托管在碼云。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/jiangchao858/article/details/77604469

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: www.天天操 | a级在线免费观看 | 日韩精品一区二区在线观看 | 亚洲网站免费 | 亚洲区视频 | 亚洲黄色a级 | 国产精品色哟哟哟 | 成年人在线免费观看视频网站 | 黄色高清视频在线观看 | 欧美不卡一区二区三区 | 日韩有码在线观看 | 91中文字幕 | 亚洲男人的天堂网站 | 午夜激情视频在线 | 精品久久久久久久久久 | 免费的黄视频 | 日韩电影在线 | 玖玖精品 | 欧美日韩国产精品一区二区 | 欧美精品网站 | 98成人网 | 亚洲成人精品视频 | 国产一级片播放 | av网站免费看 | 欧美亚洲第一页 | 亚洲视频一区二区在线观看 | 91精品国产日韩91久久久久久 | 久热久| 欧美日韩国产影院 | 小情侣高清国产在线播放 | 欧美激情国产日韩精品一区18 | 国产日韩精品视频 | 91精品久久久久久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 久综合网 | 日韩在线免费视频 | 欧美精品一区二区在线观看 | 亚洲伊人久久影院 | 中文字幕亚洲欧美日韩在线不卡 | 欧美在线视频网站 | 成人精品国产免费网站 |