最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MapStruct實體間轉(zhuǎn)換的簡單用法

 更新時間:2019年03月13日 11:39:25   作者:cj96248  
今天小編就為大家分享一篇關(guān)于MapStruct實體間轉(zhuǎn)換的簡單用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

摘要: 在實際項目中,我們經(jīng)常需要將PO轉(zhuǎn)DTO、DTO轉(zhuǎn)PO等一些實體間的轉(zhuǎn)換。比較出名的有BeanUtil 和ModelMapper等,它們使用簡單,但是在稍顯復(fù)雜的業(yè)務(wù)場景下力不從心。MapStruct這個插件可以用來處理domin實體類與model類的屬性映射,可配置性強。

建立Maven項目

MapStruct需要醒目構(gòu)建工具(如Maven)支持,如果項目結(jié)構(gòu)不標準,可能無法生成對應(yīng)的轉(zhuǎn)換類。這里我使用Maven構(gòu)建工程。

<properties>
<org.mapstruct.version>1.2.0.CR1</org.mapstruct.version>
</properties>

MapStruct是一個一直在進步的工具,后面的版本不斷改進之前版本的不足,修復(fù)之前版本的bug,使用的時候最好最新的穩(wěn)定版。

<dependencies>
  <dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-jdk8</artifactId>
    <version>${org.mapstruct.version}</version>
  </dependency>
</dependencies>

需要引入的依賴包,可以看到使用到了java8,最新版甚至已經(jīng)支持了java9。當然這不以為著你必須使用java8,java版本高于java6都是可以的。

<build>
  <plugins>
    <plugin>
<groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.5.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
          <path>
  <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
          </path>
        </annotationProcessorPaths>
      </configuration>
    </plugin>
  </plugins>
</build>

Maven插件必不可少,格式也是固定的。

簡單示例

有一個實體類-用戶User

public class User {
  private int id;
  private String name;
  private boolean married;
// setters, getters, toString
}

有一個實體類-雇員Employee,雇員也是用戶,只是比用戶多一個屬性-職位position

public class Employee {
  private int id;
  private String name;
  private String position;
  private boolean married;
// setters, getters, toString
}

在具體業(yè)務(wù)場景下,需要User 對象轉(zhuǎn)換為Employee對象,有時候需要Employee對象轉(zhuǎn)換為User對象。

使用MapStrut的話,需要寫一個接口:

@Mapper
public interface UserMapper {
  UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
  Employee userToEmployee(User user);
  User employeeToUser(Employee employee);
}

運行示例

首先需要mvn compile,自動生成轉(zhuǎn)換代碼。生成的代碼放在target/annotations下面。大致代碼如下:

import com.training.mapstrut.model.Employee;
import com.training.mapstrut.model.User;
import javax.annotation.Generated;
@Generated(
  value = "org.mapstruct.ap.MappingProcessor",
  date = "2017-08-26T17:08:23+0800",
  comments = "version: 1.2.0.CR1, compiler: javac, environment: Java 1.8.0_92 (Oracle Corporation)"
)
public class UserMapperImpl implements UserMapper {
  @Override
  public Employee userToEmployee(User user) {
    if ( user == null ) {
      return null;
    }
    Employee employee = new Employee();
    employee.setId( user.getId() );
    employee.setName( user.getName() );
    employee.setMarried( user.isMarried() );
    return employee;
  }
  @Override
  public User employeeToUser(Employee employee) {
    if ( employee == null ) {
      return null;
    }
    User user = new User();
    user.setId( employee.getId() );
    user.setName( employee.getName() );
    user.setMarried( employee.isMarried() );
    return user;
  }
}

簡單的寫個測試類實驗一下。

public class AppTest{
  @Test
  public void appTest(){
    User user = new User();
    user.setId(125);
    user.setName("Chao");
    user.setMarried(false);
    Employee e = UserMapper.INSTANCE.userToEmployee(user);
    System.out.println(e);
    Assert.assertFalse(e.isMarried());
  }
}

結(jié)果輸出:

Employee [id=125, name=Chao, position=null, married=false]

效果不錯,需要轉(zhuǎn)換的字段都準確無誤,不過有人要吐糟了,這樣的用法比BeanUtil 復(fù)雜多了,還只是達到相同的效果。這種簡單的轉(zhuǎn)化確實不需要MapStruct,它要做的是更為復(fù)雜的業(yè)務(wù)場景。

MapStruct問題

1.MapStruct轉(zhuǎn)換不準確。

MapStruct一直在更新,一些特性在舊版本中無法識別,在使用的時候最要使用比較新的版本。

2.在Eclipse下,需要M2E plug-in的支持,如果Eclipse中沒有集成,需要去Eclipse Marketplace中下載安裝,有時候還需要指定下面的配置在pom.xml的properties中,以啟用Annotation Processing
<m2e.apt.activation>jdt_apt</m2e.apt.activation>

3.在Eclipse下,Maven compile提示Nothing to compile - all classes are up to date,你可以試一下在Golds中填寫clean install compile。

4.Maven 編譯的時候,必須使用JDK,不能使用JRE,且版本要高于jdk6.

5.在Eclipse中,確定已經(jīng)生成了*MapperImpl.java,但是運行時報錯ClassNotFoundException: Cannot find implementation for com...*Mapper
在項目上右鍵 – > properties – > Java Compiler – > Annotation Processing (Enable 所有項) – > Factory Path (Enable) – > Add External JARS – > 選擇mapstruct-processor-*.jar(大概在計算機的目錄.m2\repository\org\mapstruct\mapstruct-processor) – > OK

總結(jié)

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

相關(guān)文章

  • java使用電腦攝像頭識別二維碼

    java使用電腦攝像頭識別二維碼

    這篇文章主要為大家詳細介紹了java使用電腦攝像頭識別二維碼,從攝像頭獲取圖像,再根據(jù)圖片解析出二維碼信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • idea修改maven模塊名稱還顯示老名稱問題解決

    idea修改maven模塊名稱還顯示老名稱問題解決

    本文主要介紹了idea修改maven模塊名稱還顯示老名稱問題解決,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • IDEA 格式化SQL代碼技巧分享

    IDEA 格式化SQL代碼技巧分享

    這篇文章主要介紹了IDEA 格式化SQL代碼技巧分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法

    三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法

    這篇文章主要介紹了三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡(luò)通信細節(jié)。所有遠程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02
  • Java泛型模擬scala實現(xiàn)自定義ArrayList方式

    Java泛型模擬scala實現(xiàn)自定義ArrayList方式

    這篇文章主要介紹了Java泛型模擬scala實現(xiàn)自定義ArrayList方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JPA配置方式+逆向工程映射到Entity實體類

    JPA配置方式+逆向工程映射到Entity實體類

    這篇文章主要介紹了JPA配置方式+逆向工程映射到Entity實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解決idea反編譯失敗無法查看jar包的源碼問題

    解決idea反編譯失敗無法查看jar包的源碼問題

    在IntelliJ IDEA中查看jar包源碼的兩種方法:下載反編譯軟件JD-GUI或安裝JavaBytecodeDecompiler插件
    2024-12-12
  • IntelliJ IDEA查看項目git路徑的三種方式

    IntelliJ IDEA查看項目git路徑的三種方式

    這篇文章主要介紹了IntelliJ IDEA查看項目git路徑的三種方式,文中通過圖文結(jié)合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • IDEA Error:java: 無效的源發(fā)行版: 17錯誤

    IDEA Error:java: 無效的源發(fā)行版: 17錯誤

    本文主要介紹了IDEA Error:java: 無效的源發(fā)行版: 17錯誤,這個錯誤是因為您的IDEA編譯器不支持Java 17版本,您需要更新您的IDEA編譯器或者將您的Java版本降級到IDEA支持的版本,本文就來詳細的介紹一下
    2023-08-08

最新評論

佛教| 元江| 洞口县| 老河口市| 榆树市| 自贡市| 莒南县| 吉林市| 宁明县| 武夷山市| 宜兰县| 班戈县| 永兴县| 巴彦县| 景宁| 原阳县| 甘德县| 旅游| 大方县| 伊春市| 徐闻县| 长白| 盐城市| 寻甸| 舞钢市| 井研县| 庄浪县| 武定县| 海淀区| 家居| 方正县| 鄂温| 区。| 佳木斯市| 来宾市| 长沙市| 西贡区| 胶南市| 东台市| 邵东县| 荥经县|