使用场景:
开发中,数据库表的某字段的值是固定的,就可以使用枚举实现这个功能。例如性别的值,一般只有男女两种取值
具体操作如下:
第一步: 在数据库中添加性别sex字段,类型为int,例如1或2,分别表示男或女
alter table t_user add sex int;
第二步: 在src/main/java/com.huanf.mybatisplus目录下新建枚举类,例如新建Enum,名字为enums.SexEnums。写入如下
xxxxxxxxxx
//枚举类
//写了这个注解就不需要我们写get方法了
public enum SexEnums {
MALE(1,"男"),
FEMALE(2,"女");
//该注解在属性(成员变量)上方,然后去application.yml去配置枚举扫描,这该注解被扫描后可以映射为对应的数据库类型
private Integer sex;
private String sexName;
//有参构造
SexEnums(Integer sex, String sexName) {
this.sex = sex;
this.sexName = sexName;
}
}
第三步: 在application.yml里面添加如下
#SexEnums枚举类里面使用了@EnumValue注解,如果想要被扫描到,需要在这里添加扫描枚举包的配置
type-enums-package com.huanf.mybatisplus.enums
同时我也把目前application.yml的配置写到下面
spring
#配置数据源信息
datasource
#配置数据源类型
type com.zaxxer.hikari.HikariDataSource
#配置连接数据库信息
driver-class-name com.mysql.cj.jdbc.Driver
url jdbc mysql //localhost 3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username root
password228675
#mybatis日志,作用是会在控制台生成对应的SQL语句
mybatis-plus
configuration
log-impl org.apache.ibatis.logging.stdout.StdOutImpl
#配置MyBatis-Plus的全局配置
global-config
db-config
#指定表的前缀,例如t_
table-prefix t_
#指定表的主键生成策略,例如不使用MyBatis-Plus提供的雪花算法,而是使用数据库提供的主键递增策略
id-type auto
#如果要在UserMapper.xml里面使用别名,那么就要在下一行配置,注意路径到包就行,不用写到类
type-aliases-package com.huanf.mybatisplus.pojo
#SexEnums枚举类里面使用了@EnumValue注解,如果想要被扫描到,需要在这里添加扫描枚举包的配置
type-enums-package com.huanf.mybatisplus.enums
第四步: 在User类添加如下
private SexEnums sex;
第五步: src/test/java/com.huanf.mybatisplus目录新建MyBatisPlusEnumTest类,作为测试类,写入如下
xxxxxxxxxx
public class MyBatisPlusEnumTest {
//自动装配的注解,用于使用我们写的UserMapper接口
private UserMapper userMapper;
private void zidingyi_test(){
//由于insert方法需要一个实体类的对象(例如User类),所以我们就创建一个User类的对象
User user = new User();
//为这个对象赋值,简单说就是你要修改成什么数据
user.setName("我是枚举");
user.setAge(23);
user.setSex(SexEnums.MALE);//由于我们在SexEnums类创建了枚举,所以直接使用枚举即可
//添加数据。把赋好值的对象放到insert方法里面
int result = userMapper.insert(user);//返回的是受影响的字段
System.out.println("受影响的行数是: "+result);
}
//成功执行后,去数据库看一下多了一条数据,这条数据的性别是1,也就是SexEnums.MALE,对应的是男
}