MybatisPlus优雅地使用枚举

前言

在开发中经常会用到数字标识一种状态,比如status字段为 0代表“已审核”,1代表“未审核”,2代表“已拒绝”,在这种情况下,开发的时候我们可能会自己写静态常量类或者枚举类标识其中的属性,如下:

    public static enum ChildrenStatus{
        examined(0, "已审核"),
        examining(1, "未审核"),
        notPassExamining(2, "已拒绝");
        ChildrenStatus(Integer value, String name) {
            this.value = value;
            this.name = name;
        }
        private final Integer value;
        private final String name;
        public Integer getValue() {
            return value;
        }
        public String getName() {
            return name;
        }
    }

当我们需要对数据库操作的时候,可以直接PraiseStatus.isPraised.getValue()来取得这个值,这是最普遍的用法,但是这种方式有一个痛点,就是在查询操作之后,那么返回的也是字段值,比如0、1、2,自己在做后台项目的时候,需要当前数据状态展示出来的时候,只能自己判断当前值,再做返回,比如layui的操作:

     {field: 'status', title: '状态 ', align: "center", templet: function (d) {
                            if (d.status == 0) {
                                return "已审核";
                            }
                            if (d.status == 1) {
                                return "<span class=\"layui-btn layui-btn-normal layui-btn-xs\" lay-event=\"verify\">未审核</span>";
                            }
                            if (d.status == 2) {
                                return "<span style=\"color: #f50803;\">已拒绝</span>";
                            }
                        }},

上面的span标签是返回的颜色样式做区分,在这里不做讨论,所以这样的操作的话在写后台页面会加大工作量,而且对接前端人员的时候,也需要在接口文档里把这些字段标识描述清楚,前端才能进行工作。MybatisPlus对这一情况做了优化,能够让我们在查询数据库的,直接能够返回字段标识的意思,只需要3步配置

  1. 创建枚举类实现IEnum<Integer>
public enum StatusEnum implements IEnum<Integer> {
    examined(0, "已审核"),
    examining(1, "审核中"),
    notPassExamining(2, "未通过审核");
    Status(Integer value, String name) {
        this.value = value;
        this.name = name;
    }
    private final Integer value;
    private final String name;
    @Override
    public Integer getValue() {
        return null;
    }
    public String getName() {
        return name;
    };
}
  1. properties文件里添加配置,定义扫描枚举类的包路径
mybatis-plus.type-enums-package=com.flower.enmus
  1. 修改实体类字段,本来是Integer类型,改成创建的枚举类名称
private StatusEnum status;

接下里就可以使用了,做数据库操作的时候,只需要StatusEnum .examined而不需要再写getValue()就可以直接使用了,而且在查询操作的时候会直接返回枚举类里定义的“name”值,而不会再返回0,1,2这样的值了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容