通用枚举
MyBatisPlus解决了繁琐的配置,让MyBatis更优雅的适用枚举属性。
配置枚举类扫描包
# 配置枚举扫描包
mybatis-plus.type-enums-package=psers.zhang.demo.enums
枚举类(实现IEnum<T>)
public enum SexEnum implements IEnum<Integer> {
MALE(1, "男"),
FEMALE(0, "女");
private int value;
private String desc;
SexEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
@Override
public Integer getValue() {
return this.value;
}
@Override
public String toString() {
return this.desc;
}
}
表结构
实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User extends Model<User> {
//指定主键为自增
@TableId(type = IdType.AUTO)
private Long id;
//指定数据表中字段名
@TableField(value = "user_name")
private String userName;
@TableField(fill = FieldFill.INSERT)
private String password;
private String name;
private Integer age;
private String email;
//逻辑删除字段: 0,未删除; 1,已删除
@TableLogic //标记为逻辑删除字段
private Integer deleted;
//性别,枚举类型:1,男; 0,女
private SexEnum sex;
//指定该字段在表中是不存在的
@TableField(exist = false)
private String address;
}
测试
插入数据:自动将枚举映射为字段值
@Test
public void testInsert(){
User user = new User();
user.setEmail("123456@qq.com");
user.setAge(18);
user.setName("diaochan");
user.setUserName("貂蝉");
user.setPassword("123456");
user.setSex(SexEnum.FEMALE);
user.setDeleted(0);
//返回受影响的行数
int rows = userMapper.insert(user);
System.out.println(rows);
//获取自增长后的id值,MP会自动回填自增后的id
System.out.println(user.getId());
}
查询:自动将字段值映射为枚举值
@Test
public void testSelectList(){
List<User> users = userMapper.selectList(null);
for (User u : users)
System.out.println(u);
}
控制台打印:
Execute SQL:
SELECT
id,
user_name,
password,
name,
age,
email,
deleted,
sex
FROM
tb_user
WHERE
deleted=0
User(id=4, userName=zhaoliu, password=123456, name=赵六, age=48, email=test4@qq.com, deleted=0, sex=男, address=null)
User(id=5, userName=小强, password=88888, name=xiaoqiang, age=30, email=123456@qq.com, deleted=0, sex=男, address=null)
User(id=6, userName=貂蝉, password=123456, name=diaochan, age=18, email=123456@qq.com, deleted=0, sex=女, address=null)