Mybaits-Plus 使用 Enum 枚举类

本文介绍了如何在MyBatisPlus中使用枚举类作为字段类型,包括EnumTypeHandler和EnumOrdinalTypeHandler的区别,以及如何配置和自定义枚举处理器。枚举类需要实现IEnum接口并重写getValue和toString方法,存储时可选择将枚举的name或ordinal属性存入数据库。此外,还需在配置文件中指定枚举类所在包。
摘要由CSDN通过智能技术生成

MyBatisPlus 使用枚举类作为字段类型

1. 使用背景

  • 程序中部分字段想使用 Enum 类型作为 POJO 字段的类型,把 code 存入数据库中,value 通过接口回显到前端页面。传统做法是在代码中手动转换,目前可以使用 MyBatisPlus 中 提供 的 枚举Handler,进行自动转换,实现代码的优美。

2. EnumTypeHandler和EnumOrdinalTypeHandler 比较

  • EnumTypeHandler 是 MyBatisPlus 默认的枚举处理类,如果想切换为 EnumOrdinalTypeHandler 或者自定义 Handler ,可以在如下中进行配置:

    mybatis-plus:
      configuration:
      # 默认枚举处理类
        default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
    
  • EnumTypeHandler 把枚举类的 name 属性存入数据库 ,例如: CC( 1,“抄送人”),会存储 CC 到数据库;

  • EnumOrdinalTypeHandler 使用枚举类的 ordinal 属性存储到数据库,ordinal 属性为 int 类型,例如: CC( 1,“抄送人”),会存储 1 到数据库;

  • 也可以自定义 枚举类处理器,通过配置文件注入,达到预定的效果;

3.必须配置

  • 需在配置文件中添加如下配置

    mybatis-plus:
      # enum 类所在包,启动后会加载进去
      type-enums-package: com.hare.mail.mgr.entity.enums
    

3.枚举类

  • 需要实现 IEnum 接口,重写 getValue() 方法 和 toString() 方法;
  • getValue() 方法 :在入库的时候呀进行调用;(返回 code值)
  • toString() 方法 :在回显的时候进行调用;(返回 code 值)

4.代码示例参考如下链接

https://blog.csdn.net/cold___play/article/details/104277445

5.枚举示例

/**
 * 资讯  审批状态:0、审核中(新增默认状态);1、通过;2、不通过
 */
@Data
public enum ApprovalEnum implements IEnum<Integer> {
    SH(0,"审核中"),
    TG(1,"通过"),
    NTG(2,"不通过");
    
    private int code;
    private String msg;
   
   
    // 入库
    @Override
    public Integer getValue() {
        return this.code;
    }

    // 回显
    @Override
    public String toString() {
        return this.msg;
    }

    
    public static String msg(int code) {
        for (ApprovalEnum m : ApprovalEnum.values()) {
            if (m.getCode() == code) {
                return m.getMsg();
            }
        }
        return null;
    }
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值