Mybaits-Plus 使用 Enum 枚举类

2022-08-15 08:16:33

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、不通过
 */@DatapublicenumApprovalEnumimplementsIEnum<Integer>{SH(0,"审核中"),TG(1,"通过"),NTG(2,"不通过");privateint code;privateString msg;// 入库@OverridepublicIntegergetValue(){returnthis.code;}// 回显@OverridepublicStringtoString(){returnthis.msg;}publicstaticStringmsg(int code){for(ApprovalEnum m:ApprovalEnum.values()){if(m.getCode()== code){return m.getMsg();}}returnnull;}}
  • 作者:兰陵指月
  • 原文链接:https://blog.csdn.net/qq_42868618/article/details/119218718
    更新时间:2022-08-15 08:16:33