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

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

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

服務器之家 - 編程語言 - Java教程 - MapStruct實體轉換及List轉換的方法講解

MapStruct實體轉換及List轉換的方法講解

2021-07-22 15:41雙斜杠少年 Java教程

今天小編就為大家分享一篇關于MapStruct實體轉換及List轉換的方法講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

開發(fā)中,我們經(jīng)常需要將po轉dto、dto轉po等一些實體間的轉換。比較出名的有beanutil 和modelmapper等,它們使用簡單,但是在稍顯復雜的業(yè)務場景下力不從心。mapstruct這個插件可以用來處理domin實體類與model類的屬性映射,可配置性強。只需要定義一個 mapper 接口,mapstruct 就會自動實現(xiàn)這個映射接口,避免了復雜繁瑣的映射實現(xiàn)。mapstruct官網(wǎng)地址:http://mapstruct.org/

引入依賴

?
1
2
3
4
5
<dependency>
  <groupid>org.mapstruct</groupid>
  <artifactid>mapstruct-jdk8</artifactid>
  <version>1.1.0.final</version>
</dependency>

需求

我們假設有學生student 類 需要轉換成 用戶 user 類,將學生信息存入用戶信息庫

此時student 類內容如下:

?
1
2
3
4
5
6
7
public class student {
  private integer id;
  private string name;
  private integer age;
  private string sex;
  //setters, getters, tostring() 方法此處省略不寫,但是實際開發(fā)需要寫的哦
  }

此時user 類內容如下:

?
1
2
3
4
5
6
7
public class user {
  private integer id;
  private string name;
  private integer age;
  private string sex;
  //setters, getters, tostring() 方法此處省略不寫,但是實際開發(fā)需要寫的哦
 }

轉換model

此時 student 和 user 的屬性名字都相同那么轉換接口就是

?
1
2
3
4
5
6
7
8
9
10
import org.mapstruct.mapper;
@mapper(componentmodel = "spring")
public interface usermapping {
  /**
   * student 轉化為 user
   * @param student
   * @return
   */
   user studenttouser(student student);
}

程序運行前要先編譯 mvn clean compile , 從而mapstruct框架生成usermappingimpl 實現(xiàn)類。

轉換model 屬性不匹配

如果 user 和 student 的屬性名不對應例如:

此時student 類內容如下:

?
1
2
3
4
5
6
7
public class student {
  private integer id;
  private string sname;
  private integer age;
  private string sex;
  //setters, getters, tostring() 方法此處省略不寫,但是實際開發(fā)需要寫的哦
  }

此時user 類內容如下:

?
1
2
3
4
5
6
7
public class user {
  private integer id;
  private string uname;
  private integer age;
  private string sex;
  //setters, getters, tostring() 方法此處省略不寫,但是實際開發(fā)需要寫的哦
 }

那么轉換接口為

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.mapstruct.mapper;
import org.mapstruct.mapping;
import org.mapstruct.mappings;
@mapper(componentmodel = "spring")
public interface usermapping {
  /**
   * student 轉化為 user
   * @param student
   * @return
   */
   @mappings({
      @mapping(target = "uname", source = "sname")
     // 多個屬性不對應可以用 "," 隔開編寫多個@mapping
     // ,@mapping(target = "uname", source = "sname")
  })
   user studenttouser(student student);
}

轉換model 屬性類型不匹配

比如說user 類的sex字段類型改為boolean

此時user 類內容如下:

?
1
2
3
4
5
6
7
public class user {
  private integer id;
  private string uname;
  private integer age;
  private boolean sex;
  //setters, getters, tostring() 方法此處省略不寫,但是實際開發(fā)需要寫的哦
 }

這個轉換需求有點變態(tài),所以 需要我門自己寫個轉換類

?
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 "男";
    }
    return "女";
  }
  public boolean strtoboolean(string str){
    if ("男".equals(str)) {
      return true;
    }
    return false;
  }
}

那么轉換接口為(使用 usertransform.class 類)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.mapstruct.mapper;
import org.mapstruct.mapping;
import org.mapstruct.mappings;
@mapper(componentmodel = "spring",uses = usertransform.class)
public interface usermapping {
  /**
   * student 轉化為 user
   * @param student
   * @return
   */
   @mappings({
      @mapping(target = "uname", source = "sname")
     // 多個屬性不對應可以用 "," 隔開編寫多個@mapping
     // ,@mapping(target = "uname", source = "sname")
  })
   user studenttouser(student student);
}

轉換list

當user 和 student 都是集合形式list 時應當如下轉換

轉化 list<> 集合時必須有 實體轉化,因為在實現(xiàn)中,list 轉換是 for循環(huán)調用 實體轉化的。所以當屬性名不對應時,應該在 實體轉化進行 @mappings 的屬性名映射配置,然后list的轉換也會繼承這和屬性的映射。

例如 屬性名相同

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.mapstruct.mapper;
@mapper(componentmodel = "spring")
public interface usermapping {
  /**
   * student 轉化為 user
   * @param student
   * @return
   */
   user studenttouser(student student);
   /**
   * students 轉化為 users
   * @param students
   * @return
   */
   list<user> studentstousers(list<student> students);

屬性名不同:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import org.mapstruct.mapper;
import org.mapstruct.mapping;
import org.mapstruct.mappings;
@mapper(componentmodel = "spring")
public interface usermapping {
  /**
   * student 轉化為 user
   * @param student
   * @return
   */
   @mappings({
      @mapping(target = "uname", source = "sname")
     // 多個屬性不對應可以用 "," 隔開編寫多個@mapping
     // ,@mapping(target = "uname", source = "sname")
  })
   user studenttouser(student student);
  /**
   * 此時 studentstousers 的實現(xiàn)為循環(huán)調用 studenttouser 并繼承了 studenttouser 的屬性映射
   * students 轉化為 users
   * @param students
   * @return
   */
   list<user> studentstousers(list<student> students);
}

展示自動生成的 usermappingimpl 實現(xiàn)(此類為 執(zhí)行 mvn clean compile 后自動生成)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@component
public class usermappingimpl implements usermapping {
  @override
  public user studenttouser(student student) {
    if ( student == null ) {
      return null;
    }
    user user = new user();
    user.setid(student.getid() );
    user.setname(student.getname() );
    // 如果配置了屬性映射則為
    //user.setuname(student.getsname() );
    user.setsex(student.getsex() );
    user.setage(student.getage() );
    return user;
  }
  @override
  public list<user> studentstousers(list<student> students) {
    if ( students == null ) {
      return null;
    }
    list<user> list = new arraylist<user>();
    for ( student student : students ) {
      list.add( studenttouser( student ) );
    }
    return list;
  }
}

參考資料 :http://www.jfrwli.cn/article/178072.html

總結

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

原文鏈接:https://blog.csdn.net/u012373815/article/details/88367456

延伸 · 閱讀

精彩推薦
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
主站蜘蛛池模板: 欧美黄色精品 | 久久精品一区二区三区四区 | 成人午夜精品久久久久久久3d | 亚洲四区| 免费观看在线毛片 | 亚洲男人一区 | 国产精品色哟哟哟 | 国产成人精品久久二区二区 | 在线国产视频 | 高清一区二区三区 | 毛片在线免费 | 精品美女久久 | 亚洲一区中文字幕在线观看 | 欧美久久久久 | 这里只有国产精品 | 欧美成人高清视频 | 久久国产精品久久久久久 | 国产在线一区二区三区 | 操操碰| 久久久中文 | 激情久久久| 亚洲欧美日韩精品久久亚洲区 | 在线一区视频 | 日韩欧美网站 | 日韩成人在线观看视频 | 日韩不卡一区二区 | 一区二区三区www. | 99色综合 | 中文字幕视频一区 | 婷婷91 | 99久久久无码国产精品 | 国产精品久久久久久久久久东京 | 欧美 日韩 国产 一区 | 欧美成人激情视频 | 观看av | 狠狠操狠狠操 | 久久国产精品视频 | 在线观看一区 | 欧美高清免费 | 天天夜夜操 | 国产精品久久久久久久久久久久久 |