现在在mysql中有一个表,表中存储gender是一个枚举字段,存M或F,如何在java中使用mybatis-plus将F转化为女,M转化为男
时间: 2024-10-29 09:24:33 浏览: 8
MyBatis中如何优雅的使用枚举详解
5星 · 资源好评率100%
在Java中,如果你使用MyBatis Plus操作MySQL,并且有一个性别字段(gender)存储为枚举值M或F,你可以通过数据映射(Data Mapping)来转换这个值。首先,你需要创建一个 Gender 枚举:
```java
public enum Gender {
MALE("M", "男"),
FEMALE("F", "女");
private String code;
private String name;
Gender(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
// 可选的静态方法,用于从code转换到Name
public static Gender fromCode(String code) {
for (Gender gender : values()) {
if (gender.getCode().equals(code)) {
return gender;
}
}
throw new IllegalArgumentException("Invalid gender code: " + code);
}
}
```
然后,在MyBatis Plus的Mapper XML或Model类上,你可以配置实体映射(Entity Mapping):
```xml
<!-- 如果在XML Mapper -->
<resultMap id="BaseResultMap" type="com.example.YourEntity">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="genderName" column="gender" javaType="com.example.Gender"/>
</resultMap>
<!-- 或者在Model类上,使用@TableField注解 -->
@TableField(value = "gender", javaType = Gender.class)
private Gender gender;
// 或者手动设置
public void setGenderFromCode(String code) {
this.gender = Gender.fromCode(code);
}
```
在查询时,你可以在Repository接口中调用`genderName`属性来获取转换后的名字:
```java
List<YourEntity> entities = yourRepository.selectList(null); // 查询所有
for (YourEntity entity : entities) {
System.out.println(entity.getGenderName()); // 输出 '男' 或 '女'
}
```
阅读全文