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

2021-08-24 14:31:17 +08:00
 BiChengfei

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

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

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

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 的类型处理器的功能,方便开发

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

现在微服务当道,我们项目经常会被拆分成很多子系统,就算我们自定义,最后为了高聚合,也会提取出来,形成一个单独的模块
sanyuedev
2021-08-24 22:30:38 +08:00
没想明白怎么用 大家能分享一下经验吗
lululau
2021-08-24 23:13:35 +08:00
用字符串不好吗
securityCoding
2021-08-25 09:23:58 +08:00
字符串+1 ,神烦那些用 int 表示状态的字段,贼烦人
BiChengfei
2021-08-25 10:09:32 +08:00
@lululau 参考 mybatis 和 spring mvc 对枚举的处理,枚举名(字符串)应该是最标准的
zzNaLOGIC
2021-08-25 12:02:55 +08:00
@securityCoding + 1 神烦 int

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX