V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BiChengfei
V2EX  ›  Java

Mybatis 枚举类型处理器扩展之 EnumHandler

  •  
  •   BiChengfei · 2021-08-24 14:31:17 +08:00 · 2023 次点击
    这是一个创建于 1191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    传送门: https://github.com/bichengfei/EnumHandler

    Mybatis 已经实现了很丰富的类型处理器,对于枚举类型,也提供了两种处理器:

    • EnumTypeHandler:枚举名 /枚举 Name
    • EnumOrdinalTypeHandler:枚举顺序编号,从 1 开始

    但我们业务中大部分都是类似下面的枚举

    public enum SexEnum {
    
        MAN(1, "男"),
        WOMAN(2, "女")
        ;
    
        public Integer key;
        public String value;
    
        SexEnum(Integer key, String value) {
            this.key = key;
            this.value = value;
        }
    
    }
    

    我们需要在数据库中存枚举类中的字段 key,这时候官方提供的处理器就不够用了

    本项目想要做的就是,在 pom.xml 中引入依赖,再在枚举类上加上 @EnumHandler,然后这个枚举类就可以使用到 Mybatis 的类型处理器的功能,方便开发

    12 条回复    2021-08-25 12:02:55 +08:00
    Martin9
        1
    Martin9  
       2021-08-24 14:52:40 +08:00
    mybatis plus 不是也有吗
    BiChengfei
        2
    BiChengfei  
    OP
       2021-08-24 14:56:20 +08:00
    @Martin9 不知道啊,没用过 mybatis plus,有时间看看
    BiChengfei
        3
    BiChengfei  
    OP
       2021-08-24 14:58:15 +08:00
    这算是一个小插件,来源是公司业务代码的需要,参考了一篇博客: https://segmentfault.com/a/1190000010755321 (简单易懂)
    jorneyr
        4
    jorneyr  
       2021-08-24 16:59:02 +08:00
    挺好的,获取反射信息那可以做个简单的缓存
    BiChengfei
        5
    BiChengfei  
    OP
       2021-08-24 17:36:46 +08:00
    @jorneyr 哈哈哈,写的越多,bug 越多,不敢多写,不过后续会慢慢完善
    siweipancc
        6
    siweipancc  
       2021-08-24 18:09:39 +08:00 via iPhone
    ……大可不必,这是基础教程的内容
    BiChengfei
        7
    BiChengfei  
    OP
       2021-08-24 18:39:27 +08:00
    @siweipancc 是的,只需要实现接口 TypeHandler 就可
    如果是学习,建议自定义枚举类型处理器,很简单的
    但真实项目中,这样还是有点点麻烦,我思考了一两周,也和同事讨论过,然后觉得这个扩展有意义,就做了

    现在微服务当道,我们项目经常会被拆分成很多子系统,就算我们自定义,最后为了高聚合,也会提取出来,形成一个单独的模块
    sanyuedev
        8
    sanyuedev  
       2021-08-24 22:30:38 +08:00
    没想明白怎么用 大家能分享一下经验吗
    lululau
        9
    lululau  
       2021-08-24 23:13:35 +08:00
    用字符串不好吗
    securityCoding
        10
    securityCoding  
       2021-08-25 09:23:58 +08:00
    字符串+1 ,神烦那些用 int 表示状态的字段,贼烦人
    BiChengfei
        11
    BiChengfei  
    OP
       2021-08-25 10:09:32 +08:00
    @lululau 参考 mybatis 和 spring mvc 对枚举的处理,枚举名(字符串)应该是最标准的
    zzNaLOGIC
        12
    zzNaLOGIC  
       2021-08-25 12:02:55 +08:00 via Android
    @securityCoding + 1 神烦 int
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5463 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:37 · PVG 15:37 · LAX 23:37 · JFK 02:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.