**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多表查询
- 只查询指定字段
- 级联操作
- 加载规则