**1. 两个实体类**
```java
@Builder
@Data
public class Nurse {
private Integer id;
private String name;
}
@Builder
@Data
public class NurseDto {
private Integer id;
private String name;
}
```
**2. 映射接口**
```java
@Mapper
public interface NurseMapper {
NurseMapper INSTANCE = Mappers.getMapper(NurseMapper.class);
/**
* id的取值为constant。
* 当s.name为null时,name的取值为defaultValue
*/
@Mapping(target = "id", constant = "-1000")
@Mapping(source = "s.name", target = "name", defaultValue = "没有这个人!")
NurseDto toDto(Nurse s);
}
```
**3. 测试**
```java
@Test
public void testNurseMapper() {
Nurse nurse = Nurse.builder().id(1001).name(null).build();
NurseDto nurseDto = NurseMapper.INSTANCE.toDto(nurse);
//Nurse:Nurse(id=1001, name=null)
System.out.println("Nurse:" + nurse.toString());
//NurseDto:NurseDto(id=-1000, name=没有这个人!)
System.out.println("NurseDto:" + nurseDto.toString());
}
```
**4. 查看被MapStruct编译后的代码**
```java
public class NurseMapperImpl implements NurseMapper {
public NurseMapperImpl() {
}
public NurseDto toDto(Nurse s) {
if (s == null) {
return null;
} else {
NurseDtoBuilder nurseDto = NurseDto.builder();
if (s.getName() != null) {
nurseDto.name(s.getName());
} else {
nurseDto.name("没有这个人!");
}
nurseDto.id(-1000);
return nurseDto.build();
}
}
}
```
- MapStruct属性映射
- MapStruct是什么
- maven依赖
- 基本映射
- 字段名不一致的映射
- 字段类型不一致的映射
- 基本数据类型转换
- 日期格式转换
- 使用表达式转换
- 枚举映射
- 多个源类的映射
- 集合的映射
- 添加自定义映射方法
- 映射前后
- 添加默认值
- 映射异常处理
- SpringDataJPA
- SpringDataJPA是什么
- 与JPA、Hibernate的关系
- 环境搭建
- 简单CURD操作
- 内部原理
- 主键生成策略
- 联合主键
- 查询方式
- 方法命名规则查询
- 限制查询结果查询
- 注解@Query查询
- 命名参数查询
- SpEL表达式查询
- 原生查询
- 更新与删除
- Specification动态查询
- 核心接口
- 查询例子
- 分页查询与排序
- 多表查询
- 一对一查询
- 一对多查询
- 多对多查询
- 注意事项
- Specification多表查询
- @Query多表查询
- 只查询指定字段
- 级联操作
- 加载规则