【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 }

输出的值如下:

 

posted @ 2022-09-29 20:18  陆陆无为而治者  阅读(874)  评论(0编辑  收藏  举报