@Mapping(target = "fullName", source = "name") 映射时男女映射成0/1
时间: 2024-09-12 11:12:19 浏览: 44
`@Mapping` 是一种在某些技术栈中常见的注解,通常用于自动化工具(如Spring Data JPA、Hibernate等)进行属性间的数据绑定或转换。当你看到 `target = "fullName"` 和 `source = "name"` 的时候,这意味着当获取或设置 `name` 属性的值时,将会相应地更新或填充 `fullName` 属性。
如果在性别映射的例子中,`name` 可能是一个字符串字段,比如 "男" 对应 0,"女" 对应 1,那么这样的配置可能是这样:
```java
@Entity
public class Person {
@Id
private Long id;
@Column(name = "name")
private String name;
@Column(name = "full_name")
@Mapping(target = "full_name", source = "name", conversion = GenderConverter.class)
private String fullName;
// 构造函数、getter/setter...
// 假设有一个 GenderConverter 类实现转换逻辑
static class GenderConverter implements AttributeConverter<Gender, String> {
@Override
public String convertToDatabaseColumn(Gender gender) {
return gender.name(); // 转换为对应的数字字符串("男" -> "0", "女" -> "1")
}
@Override
public Gender convertToEntityAttribute(String genderStr) {
return Gender.valueOf(genderStr); // 转换回 Gender 枚举值
}
}
enum Gender {
MALE("男", 0),
FEMALE("女", 1);
private final String name;
private final int value;
Gender(String name, int value) {
this.name = name;
this.value = value;
}
// getter, toString 等方法...
}
}
```
在这个例子中,`GenderConverter` 负责将 `name` 字符串转换为数据库所需的 0 或 1,反之亦然。
阅读全文