【Mybatis-Plus】之通用枚举
表中有些值是固定的。例如(性别)。此时,我们可以使用Mybatis-Plus通用枚举来实现。
前提条件
- 以安装适合版本的Java、Maven仓库。
- 已搭建SpringBoot框架。
- 存在可连接的数据库(这里为MySQL)。
- 已经配置好Mybatis环境以及数据库配置、依赖项。
通用枚举步骤示例
创建通用枚举的步骤如下
添加数据表,包含枚举字段
这里表t_user设置性别字段。
创建通用枚举类型
新建枚举类型SexEnum,这里我使用了lombok,当然,不使用lombok可以直接编写枚举值的Getter方法。
1 /** 2 * 性别枚举 3 */ 4 @Getter 5 public enum SexEnum { 6 7 MALE(1, "男"), 8 FEMALE(2, "女"); 9 10 @EnumValue 11 private Integer sex; 12 private String sexName; 13 14 SexEnum(Integer sex, String sexName){ 15 this.sex = sex; 16 this.sexName = sexName; 17 } 18 19 }
对应的实体类如下:
1 @Data 2 @Builder 3 //@TableName("t_user") // 设置实体类对应的表名 4 public class User { 5 6 // 将属性对应的字段指定为主键 7 @TableId(value = "id",type = IdType.AUTO) // 只有一个values属性,可以省略value = 。属性对应字段 8 // ,type = IdType.AUTO 自动递增 9 private Integer uid; 10 private String username; 11 private String password; 12 13 private String name; 14 private Integer age; 15 private String email; 16 private SexEnum sex; 17 @TableLogic 18 private Boolean isDelete; 19 }
扫描通用配置
可以根据习惯打开配置文件(.yml或.properties),这里打开application.yml文件( type-enums-package 表示枚举的包路径)。
1 mybatis-plus: 2 configuration: 3 # 配置MyBatis日志 4 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 5 global-config: 6 db-config: 7 # 配置MyBatis-Plus操作表的默认前缀 8 table-prefix: t_ 9 # 配置MyBatis-Plus的主键策略 10 id-type: auto 11 # 配置扫描通用枚举 12 type-enums-package: com.atguigu.mybatisplus.enums
测试
新建测试方法。我们看看能否将枚举值更新到数据库。
1 /** 2 * 测试写入枚举 3 */ 4 @Test 5 public void testSexEnum (){ 6 //设置性别信息为枚举项,会将@EnumValue注解所标识的属性值存储到数据库 7 User user = User.builder().name("李磊").sex(SexEnum.FEMALE).build(); 8 val result =userMapper.insert(user); 9 System.out.println(result); 10 }
查看数据库,发现已经将枚举值写入数据库:
这里1表示“男”,2表示女。
查看样式时,显示的是枚举字符串,测试如下。
1 /** 2 * 测试查询时写入值 3 */ 4 @Test 5 public void testSexEnumSelect(){ 6 userMapper.selectList(null).forEach(System.out::println); 7 }
输出的值如下:
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。