**1. 兩個實體類**
```java
@Data
public class Book {
private Integer bookId;
}
@Data
public class BookDto {
private Integer bookDtoId;
}
```
**2. 異常處理**
```java
public class Validator {
/**
* 該方法只有一個參數
*/
public Integer validateId(Integer id) throws ValidationException {
if(id == -1){
throw new ValidationException("Invalid value in ID");
}
return id;
}
}
```
**3. 映射接口**
```java
/**
* 使用uses引入Validator
*/
@Mapper(uses = {Validator.class})
public interface BookMapper {
BookMapper INSTANCE = Mappers.getMapper(BookMapper.class);
/**
* 當source.bookId的類型與方法validateId(Integer id)的參數類型一致時(必須一致,子類或者基本類對包裝類都不可以),
* 就會調用方法validateId(Integer id)。
* @throws ValidationException throws可有可無
*/
@Mapping(source = "source.bookId", target = "bookDtoId")
BookDto toDto(Book source) throws ValidationException;
}
```
**4. 測試**
```java
@Test
public void testBookMapper() throws ValidationException {
Book book = new Book();
book.setBookId(-1);
//拋出異常javax.xml.bind.ValidationException: Invalid value in ID
BookDto bookDto = BookMapper.INSTANCE.toDto(book);
System.out.println("Book:" + book);
System.out.println("BookDto:" + bookDto);
}
```
- MapStruct屬性映射
- MapStruct是什么
- maven依賴
- 基本映射
- 字段名不一致的映射
- 字段類型不一致的映射
- 基本數據類型轉換
- 日期格式轉換
- 使用表達式轉換
- 枚舉映射
- 多個源類的映射
- 集合的映射
- 添加自定義映射方法
- 映射前后
- 添加默認值
- 映射異常處理
- SpringDataJPA
- SpringDataJPA是什么
- 與JPA、Hibernate的關系
- 環境搭建
- 簡單CURD操作
- 內部原理
- 主鍵生成策略
- 聯合主鍵
- 查詢方式
- 方法命名規則查詢
- 限制查詢結果查詢
- 注解@Query查詢
- 命名參數查詢
- SpEL表達式查詢
- 原生查詢
- 更新與刪除
- Specification動態查詢
- 核心接口
- 查詢例子
- 分頁查詢與排序
- 多表查詢
- 一對一查詢
- 一對多查詢
- 多對多查詢
- 注意事項
- Specification多表查詢
- @Query多表查詢
- 只查詢指定字段
- 級聯操作
- 加載規則