<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      22、MapStruct對象映射轉換

      一、對象轉換方式:

      1、SET與GET賦值方式:

      SET與GET賦值方式是最基本的一種對象轉換方式。通過手動調用源對象的 getter 方法,獲取源對象的屬性值,然后通過目標對象的 setter方法將值設置到目標對象中。

      public class UserDTO {
          private String name;
          private int age;
      
          // Getters and Setters
      }
      
      public class UserEntity {
          private String name;
          private int age;
      
          // Getters and Setters
      }
      
      public class Converter {
          public UserDTO convertToDTO(UserEntity userEntity) {
              UserDTO userDTO = new UserDTO();
              userDTO.setName(userEntity.getName());
              userDTO.setAge(userEntity.getAge());
              return userDTO;
          }
      
          public UserEntity convertToEntity(UserDTO userDTO) {
              UserEntity userEntity = new UserEntity();
              userEntity.setName(userDTO.getName());
              userEntity.setAge(userDTO.getAge());
              return userEntity;
          }
      }

      2、BeanUtils工具類轉換方式:

      BeanUtils 是 Apache Commons BeanUtils 庫提供的工具類,它可以簡化對象之間的屬性復制工作。通過 BeanUtils.copyProperties() 方法,可以將一個對象的屬性值復制到另一個對象中,通常用于對象之間的轉換。該方法會自動映射源對象和目標對象的同名屬性。

      import org.apache.commons.beanutils.BeanUtils;
      
      public class UserDTO {
          private String name;
          private int age;
      
          // Getters and Setters
      }
      
      public class UserEntity {
          private String name;
          private int age;
      
          // Getters and Setters
      }
      
      public class Converter {
          public UserDTO convertToDTO(UserEntity userEntity) throws Exception {
              UserDTO userDTO = new UserDTO();
              BeanUtils.copyProperties(userDTO, userEntity);  // 復制屬性
              return userDTO;
          }
      
          public UserEntity convertToEntity(UserDTO userDTO) throws Exception {
              UserEntity userEntity = new UserEntity();
              BeanUtils.copyProperties(userEntity, userDTO);  // 復制屬性
              return userEntity;
          }
      }

      3、MapStruct對象映射轉換方式:

      底層基于SET與GET賦值方式實現

      特性SET與GET賦值方式BeanUtils工具類MapStruct對象映射

      實現方式

      手動調用 getter 和 setter

      使用 BeanUtils.copyProperties()

      編譯時生成代碼,通過注解定義映射

      優點

      直接且靈活,完全可控

      代碼簡潔,易于使用

      高性能,支持復雜映射,自定義規則

      缺點

      代碼冗長,易出錯

      僅支持簡單類型轉換

      配置較為復雜,需依賴 MapStruct

      性能

      較低(尤其是大量屬性時)

      較低(反射機制)

      高(編譯時生成代碼)

       

      二、MapStruct對象映射轉換方式的基本使用:

      1、POM依賴:

      <!--MapStruct 依賴-->
      <dependency>
           <groupId>org.mapstruct</groupId>
           <artifactId>mapstruct</artifactId>
           <version>1.4.1.Final</version>
      </dependency>
      <!--MapStruct 注解處理器-->
      <dependency>
          <groupId>org.mapstruct</groupId>
          <artifactId>mapstruct-processor</artifactId>
          <version>1.4.1.Final</version>
      </dependency>

      注:

      MapStruct版本與SpringBoot版本相對應
      MapStruct依賴必須在Lombok依賴的后面

      2、常規處理:

      在MapStruct中,若兩個類型中的屬性名稱相同,則會自動完成轉換。

      import com.example.mapstructdemo.model.UserBasicVO;
      import com.example.mapstructdemo.model.UserResponseVO;
      import org.mapstruct.Mapper;
      
      
      /**
       * 常規處理轉換:
       * 在MapStruct中,若兩個類型中的屬性名稱相同,則會自動完成轉換。
       * */
      @Mapper(componentModel = "spring")
      public interface ConventionalProcessingConversion {
      
          UserResponseVO toHandelUserInfo(UserBasicVO userBasicVO);
      
      }

      3、特殊處理:

      在MapStruct中,若想自定義轉換的屬性,則可使用@Mapping注解進行處理。

      import com.example.mapstructdemo.model.TypeEnums;
      import com.example.mapstructdemo.model.UserBasicVO;
      import com.example.mapstructdemo.model.UserResponseVO;
      import org.mapstruct.Mapper;
      import org.mapstruct.Mapping;
      import org.mapstruct.Mappings;
      
      /**
       * 特殊處理轉換:
       *     1、時間格式化
       *     2、返回值處理
       *     3、默認值設置
       *     ......
       *
       * */
      @Mapper(componentModel = "spring", imports = {TypeEnums.class}) //TypeEnums:自定義枚舉轉換等方式
      public interface SpecialProcessingConversion {
      
          @Mappings({
                  @Mapping(target = "type",expression = "java(TypeEnums.getValue(userBasicVO.getType()))"),//返回值處理
                  @Mapping(target = "createDate", dateFormat = "yyyy-MM-dd HH:mm:ss"),//日期格式轉換
                  @Mapping(target = "info", source = "sex"), //target用來指定要處理的目標類型的屬性,source用來指定源類型的屬性名
                  // @Mapping(target = "info", source = "sex", defaultExpression = "java( com.demo.UserSexMethod.getDefaultSex())"), //sex為null,設置自定義默認值
                  @Mapping(target = "info2", constant = "備注信息")//賦值
          })
          UserResponseVO toHandelUserInfo(UserBasicVO userBasicVO);
      
      }

       

      posted on 2024-12-16 23:32  愛文(Iven)  閱讀(579)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 蜜臀av无码一区二区三区| 国产一二三五区不在卡| 国产综合欧美| 欧美日韩一区二区三区视频播放| AV无码免费不卡在线观看 | 一级做a爰片在线播放| 最新亚洲av日韩av二区| 精品久久精品久久精品九九 | 亚洲中文字幕亚洲中文精| 亚洲 小说区 图片区 都市| 午夜福利在线观看6080| 99热这里有精品| 精品无套挺进少妇内谢| 色综合热无码热国产| 亚洲日韩性欧美中文字幕| 国产高潮国产高潮久久久| 黄色三级亚洲男人的天堂| 国产精品无遮挡一区二区| 岛国av在线播放观看| 制服 丝袜 亚洲 中文 综合| 亚洲av免费看一区二区| 国产老熟女无套内射不卡| 中国农村真卖bbwbbw| 午夜福利片1000无码免费| 亚洲AV日韩AV激情亚洲| 亚洲精品久久久久久婷婷| 久热re这里精品视频在线6 | 国产一区二区三区在线看| 在线精品另类自拍视频| 亚洲中文字幕第一页在线| 岛国最新亚洲伦理成人| 日本高清成本人视频一区| 人妻中文字幕亚洲精品| 国产美女69视频免费观看| 99久久99这里只有免费费精品| 狠狠色狠狠色五月激情| 麻豆精品一区二区综合av| 亚洲国产理论片在线播放| 伊人久久大香线蕉av色婷婷色| 人妻另类 专区 欧美 制服| 亚洲欧美高清在线精品一区二区|