**1. 字段類型不一致的兩個實體類**
```java
@Data
public class Cat {
private int id;
private Integer age;
private boolean real;
}
@Data
public class CatDto {
private Integer id;
private long age;
private String real;
}
```
**2. 映射接口**
```java
@Mapper
public interface CatMapper {
CatMapper INSTANCE = Mappers.getMapper(CatMapper.class);
/**
* 下面的情況可以不手動處理:
* 1) 基本類型及其對應的包裝類之間。如int/Integer、float/Float、long/Long、boolean/Boolean等。
* 2) 任意基本類型與任意包裝類之間。如int/long、byte/Integer等。
* 3) 所有基本類型及包裝類與String之間。如boolean/String、Integer/String、float/String等。
* 4) 枚舉和String之間。
* 5) Java大數類型(java.math.BigInteger, java.math.BigDecimal)和Java基本類型(包括其包裝類)與String之間。
*
*/
CatDto toDto(Cat source);
}
```
**3. 測試**
```java
@Test
public void testCatMapper() throws ParseException {
Cat cat = new Cat();
cat.setId(1001);
cat.setAge(25);
cat.setReal(true);
CatDto catDto = CatMapper.INSTANCE.toDto(cat);
//Cat:Cat(id=1001, age=25, real=true)
System.out.println("Cat:" + cat.toString());
//CatDto:CatDto(id=1001, age=25, real=true)
System.out.println("CatDto:" + catDto.toString());
}
```
**4. 查看映射接口被Mapstruct編譯后的代碼**
```java
public class CatMapperImpl implements CatMapper {
public CatMapperImpl() {
}
public CatDto toDto(Cat source) {
if (source == null) {
return null;
} else {
CatDto catDto = new CatDto();
catDto.setId(source.getId());
if (source.getAge() != null) {
catDto.setAge((long)source.getAge());
}
catDto.setReal(String.valueOf(source.isReal()));
return catDto;
}
}
}
```
- MapStruct屬性映射
- MapStruct是什么
- maven依賴
- 基本映射
- 字段名不一致的映射
- 字段類型不一致的映射
- 基本數據類型轉換
- 日期格式轉換
- 使用表達式轉換
- 枚舉映射
- 多個源類的映射
- 集合的映射
- 添加自定義映射方法
- 映射前后
- 添加默認值
- 映射異常處理
- SpringDataJPA
- SpringDataJPA是什么
- 與JPA、Hibernate的關系
- 環境搭建
- 簡單CURD操作
- 內部原理
- 主鍵生成策略
- 聯合主鍵
- 查詢方式
- 方法命名規則查詢
- 限制查詢結果查詢
- 注解@Query查詢
- 命名參數查詢
- SpEL表達式查詢
- 原生查詢
- 更新與刪除
- Specification動態查詢
- 核心接口
- 查詢例子
- 分頁查詢與排序
- 多表查詢
- 一對一查詢
- 一對多查詢
- 多對多查詢
- 注意事項
- Specification多表查詢
- @Query多表查詢
- 只查詢指定字段
- 級聯操作
- 加載規則