引言
在日常开发过程中,经常会遇到以下情况:
在数据库中性别的字段在可能是使用一个数字0或者1来标志男性或者是女性,而在使用Mybatis-plus时,对于枚举
类型的诸如查询和插入操作都需要去做枚举类型的一个转换。此文就是记录如何使用mybatis-plus去处理这个枚举
类型的映射问题。
具体操作
首先这里需要做一个前期准备,先把相关的依赖导入一下(分别是mybatis-plus和fastjson的依赖):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
在依赖导入之后,去创建对应的枚举类:
@Getter
public enum SexEnum {
MAN(1,"男"),
WOMAN(0,"女");
@EnumValue //将注解所标识的属性的值存储到数据库中
private Integer sex;
@JsonValue
private String sexName;
SexEnum(Integer sex, String sexName) {
this.sex = sex;
this.sexName = sexName;
}
}
其中可以看到注解@EnumValue和@JsonValue,前者的是标识数据库中存取的对应值,比如此处的sex(整型值)
就是存入数据库的值,而后者则是对应你在查询时取出的值,可以根据查询到的整型值去在mybatis-plus查询时对
应封装成枚举类型。
枚举类创建完成之后,需要去对mybatis-plus做一个相关配置,让它去扫描和识别这个枚举类所在的包
mybatis-plus:
type-enums-package: xxx.xxx.xxx.enums
配置完后只需在实体类中将对应的属性数据类型定义为此枚举类型即可:
@Data
@NoArgsConstructor
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("username")
private String userName;
private String password;
private String name;
private SexEnum sex;
}
到这里就已经完成了,下面是我的测试的代码(测试后是没有问题的):
@Test
void testInsert() {
User user = new User();
user.setName("测试");
user.setAddress("南昌");
user.setIdCard("123343231");
user.setPhone("13032325365");
user.setSex(SexEnum.MAN);
user.setUserName("root");
user.setPassword("123");
user.setRole(1);
userDao.insert(user);
}
@Test
void testQuery(){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("username","root");
User user = userDao.selectOne(queryWrapper);
System.out.println(user.getSex().getSexName());
}
总结
看完后会发现mybatis-plus处理通用枚举类还是很简单的,注解加相关配置就行了,此文章也是用于学习记录,如果
有帮到大家,记得点个?!
版权声明:本文为qq_45754041原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。