• MybatisPlus通用枚举


    表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现。

    添加字段

    在数据库表添加字段sex

    alter table t_user modify sex int null comment '性别';
    
    • 1

    image-20220730013831426

    创建通用枚举类型

    package com.dawn.mybatisplus.pojo;
    
    public enum SexEnum {
        MALE(1, "男"),
        FEMALE(2, "女");
    
        @EnumValue //将注解所标识的属性的值存储到数据库中
        private int sex;
        private String sexName;
        
        SexEnum(Integer sex, String sexName) {
            this.sex = sex;
            this.sexName = sexName;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    @EnumValue 用来标记数据库存的值。

    Mybatis 原生默认是以枚举的名称:Enum.name()作为默认值,即 User 类中定义的属性 private SexEnum sex; 默认向数据库存的时候会将 SexEnum.MALE.name() 的值存入数据库(String类型)。

    使用 @EnumValue 注解标识 SexEnum 类中的 sex 属性后,保存数据库时就会取值 sex 保存进数据库。同样如果标识 sexName 保存时会取 sexName 的值(男/女)保存入库。

    实体类修改

    在 User 实体类中添加属性sex

    @Data
    @TableName("t_user")
    public class User {
        @TableId("uid")
        private Long id;
        @TableField("username")
        private String name;
        private Integer age;
        private String email;
    
        private SexEnum sex;
    
        @TableLogic//逻辑删除
        private int isDeleted;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    配置扫描通用枚举

    mybatis-plus:
      configuration:
        #配置日志
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        db-config:
          # 设置实体类所对应的表的统一前缀
          table-prefix: t_
          # 配置MyBatis-Plus的主键策略
          id-type: auto
      # 扫描通用枚举的包
      type-enums-package: com.dawn.mybatisplus.enums
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    测试

    @Test
    public void testEnum(){
        User user = new User();
        user.setName("admin");
        user.setAge(33);
        user.setSex(SexEnum.MALE);
        int result = userMapper.insert(user);
        System.out.println("result:"+result);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    控制台打印执行结果

    image-20220730014630701

  • 相关阅读:
    如何在小红书安全引流?
    uni-app云开发(我直接访问后端)
    嵌入式实时操作系统的设计与开发(aCoral线程学习)
    【网安神器篇】——Crunch字典生成工具
    【面试心得】C++ 线程池总结
    如果一个人不爱你了,你只需拿回两样东西
    武忠祥每日一题知识点总结
    S型速度曲线轨迹规划(约束条件为速度和位移)
    用python实现mac地址加一
    [附源码]计算机毕业设计JAVA在线二手车交易信息管理系统
  • 原文地址:https://blog.csdn.net/qq_42057154/article/details/126711338