**1. 兩個字段類型不一致的實體類**
```java
@Data
public class Kite {
private Date createTime;
private String updateTime;
}
@Data
public class KiteDto {
private String createTime;
private LocalDate updateTime;
}
```
**2. 映射接口**
```java
@Mapper
public interface KiteMapper {
KiteMapper INSTANCE = Mappers.getMapper(KiteMapper.class);
/**
* 使用dateFormat指定日期格式
*/
@Mapping(source = "createTime", target = "createTime", dateFormat = "yyyy-MM-dd")
@Mapping(source = "updateTime", target = "updateTime", dateFormat = "yyyy-MM-dd")
KiteDto toDto(Kite source);
}
```
**3. 測試**
```java
@Test
public void testKiteMapper() {
Kite kite = new Kite();
kite.setCreateTime(new Date());
kite.setUpdateTime("2021-10-21");
KiteDto kiteDto = KiteMapper.INSTANCE.toDto(kite);
//Kite:Kite(createTime=Fri Oct 15 09:15:35 CST 2021, updateTime=2021-10-21)
System.out.println("Kite:" + kite);
//KiteDto:KiteDto(createTime=2021-10-15, updateTime=2021-10-21)
System.out.println("KiteDto:" + kiteDto);
}
```
**4. 查看映射接口被Mapstruct編譯后的代碼**
```java
public class KiteMapperImpl implements KiteMapper {
public KiteMapperImpl() {
}
public KiteDto toDto(Kite source) {
if (source == null) {
return null;
} else {
KiteDto kiteDto = new KiteDto();
if (source.getCreateTime() != null) {
kiteDto.setCreateTime((new SimpleDateFormat("yyyy-MM-dd")).format(source.getCreateTime()));
}
if (source.getUpdateTime() != null) {
kiteDto.setUpdateTime(LocalDate.parse(source.getUpdateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
return kiteDto;
}
}
}
```
- MapStruct屬性映射
- MapStruct是什么
- maven依賴
- 基本映射
- 字段名不一致的映射
- 字段類型不一致的映射
- 基本數據類型轉換
- 日期格式轉換
- 使用表達式轉換
- 枚舉映射
- 多個源類的映射
- 集合的映射
- 添加自定義映射方法
- 映射前后
- 添加默認值
- 映射異常處理
- SpringDataJPA
- SpringDataJPA是什么
- 與JPA、Hibernate的關系
- 環境搭建
- 簡單CURD操作
- 內部原理
- 主鍵生成策略
- 聯合主鍵
- 查詢方式
- 方法命名規則查詢
- 限制查詢結果查詢
- 注解@Query查詢
- 命名參數查詢
- SpEL表達式查詢
- 原生查詢
- 更新與刪除
- Specification動態查詢
- 核心接口
- 查詢例子
- 分頁查詢與排序
- 多表查詢
- 一對一查詢
- 一對多查詢
- 多對多查詢
- 注意事項
- Specification多表查詢
- @Query多表查詢
- 只查詢指定字段
- 級聯操作
- 加載規則