您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

MybatisPlus中实体类属性对应枚举类实现

时间:2022-01-20 13:27:45  来源:  作者:晓掌柜丶韶华

一、前言

1.1、关于枚举类

① 枚举是JDK1.5中的新功能,我们可以使用枚举很好的去描述一些业务场景:一年有四季、人类有男女...

② 同样我们在业务层面会有很多,比如状态属性、分类属性等等,我们可以把他们放在数据库里面以达到动态读取的效果。

1.2、我的枚举使用场景

在我的程序中有很多是、否属性的字段。为了较好地解决这个业务场景我使用枚举进行了属性值得记录,同时枚举和MyBatisPlus结合,使得开发效率也有小小的提升。

二、整合过程

2.1、配置扫描包

因为是与MybatisPlus整合,所以要在yml文件中配置枚举类的扫描包


# mybatisPlus
mybatis-plus:
    mApper-locations: classpath*:/mapper/**/*.xml
    # 枚举类扫描
    typeEnumsPackage: com.XXX.commons.enums
    global-config:
        #数据库相关配置
        db-config:
            #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
            id-type: AUTO
            #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
            field-strategy: NOT_NULL
            #驼峰下划线转换
            column-underline: true
            logic-delete-value: 1
            logic-not-delete-value: 0
        banner: false
    #原生配置
    configuration:
        log-impl: org.Apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true
        cache-enabled: false
        call-setters-on-nulls: true
        jdbc-type-for-null: 'null'
        default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler

 

2.2、创建枚举类(以是否XXX属性为例)


import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;

/**
* @author XA
* date 2021/3/19 16:04
 * description: “是否”枚举类
*/
public enum TureOrFalseEnum {

    STATE_1(0, "否"),
    STATE_2(1, "是"),;

    TureOrFalseEnum(Integer key, String value) {
        this.value = value;
        this.key = key;
    }

    @EnumValue
    private Integer key;

    @JsonValue
    private String value;

    public Integer getKey() {
        return key;
    }

    public String getValue() {
        return value;
    }

    public static String getValueBykey(Integer key){
        TureOrFalseEnum[] applicationStateEnums = values();
        for (TureOrFalseEnum itemEnum : applicationStateEnums) {
            if (itemEnum.key.equals(key)) {
                return itemEnum.getValue();
            }
        }
        return null;
    }


    public static Integer getKeyByValue(String value){
        for (TureOrFalseEnum itemEnum : TureOrFalseEnum.values()) {
            if(value.equals(itemEnum.getValue())){
                return itemEnum.getKey();
            }
        }
        return null;
    }

}

 

2.3、实体类中设置类型为对应的枚举


import com.bh.openapi.commons.enums.TureOrFalseEnum;
import lombok.Data;

@Data
public class TestDTO {
    
    /**
    * 是否删除
    */
    private TureOrFalseEnum deleted;
    
}

 

2.4、达到效果

① 我们在写入数据时字段属性为1

② 我们在进行数据查询时,deleted属性返回的是中文描述:是

三、注意事项

3.1、配置枚举扫描

如果你不配置枚举扫描包,会导致在进行数据查询后无法做对应的数据类型转换。

3.2、枚举类的属性值注解

枚举类中的key使用 @EnumValue

枚举类中的属性描述使用 @JsonValue

3.3、模型层属性类型

POJO类中要修改属性的类型为你所需要的对应的枚举。



Tags:MybatisPlus   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天介绍一个 MyBatis - Plus 官方发布的神器:mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计、数据敏感词过滤(AC算法),字段加密,字典回写(数据绑定),数据权限,表结构自动生成...【详细内容】
2022-06-17  Tags: MybatisPlus  点击:(43)  评论:(0)  加入收藏
1. Mybatis 存在的痛点我们知道 MyBatis 是一个基于 java 的持久层框架,它内部封装了 jdbc,极大提高了我们的开发效率。但是使用 Mybatis 开发也有很多痛点: 每个 Dao 接口都需...【详细内容】
2022-06-14  Tags: MybatisPlus  点击:(37)  评论:(0)  加入收藏
MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法。2|0引入依赖在项目中pom文件引入m...【详细内容】
2022-05-05  Tags: MybatisPlus  点击:(52)  评论:(0)  加入收藏
SpringBoot 集成 MybatisPlus 系列SpringBoot 版本:2.6.4 MybatisPlus 版本:3.5.1 SpringBoot整合MybatisPlus SpringBoot整合MybatisPlus数据自动填充 SpringBoot整合Mybatis...【详细内容】
2022-03-18  Tags: MybatisPlus  点击:(158)  评论:(0)  加入收藏
一、前言1.1、关于枚举类① 枚举是JDK1.5中的新功能,我们可以使用枚举很好的去描述一些业务场景:一年有四季、人类有男女...② 同样我们在业务层面会有很多,比如状态属性、分...【详细内容】
2022-01-20  Tags: MybatisPlus  点击:(220)  评论:(0)  加入收藏
(一)前言最早写JDBC的时候,要手动配连接信息,要一条条手写sql语句。后来Mybatis出现了,不需要再手动配置连接信息,sql语句也和代码隔离开来,但是还免不了写Sql。接着出现了MybatisP...【详细内容】
2021-09-17  Tags: MybatisPlus  点击:(173)  评论:(0)  加入收藏
▌简易百科推荐
微服务,顾名思义,就是将我们程序拆分为最小化单元来提供服务。在一体化系统中,各个微服务也是不可能独立存在的,那么微服务之间涉及到的数据依赖问题,应该怎么处理呢?我们从场景入...【详细内容】
2022-07-06  老周聊架构谈人生    Tags:微服务   点击:(17)  评论:(0)  加入收藏
本文笔者来为大家介绍下Netty的核心引擎Reactor的运转架构,希望通过本文的介绍能够让大家对Reactor是如何驱动着整个Netty框架的运转有一个全面的认识。也为我们后续进一步...【详细内容】
2022-07-05  Java码农之路    Tags: Reactor   点击:(17)  评论:(0)  加入收藏
简介SqlRunner,一个非常实用的、用于操作数据库的工具类。该类对JDBC进行了很好的封装,结合SQL工具类,能够很方便地通过Java代码执行SQL语句并检索SQL执行结果。SqlRunner提供...【详细内容】
2022-07-05  嗨皮汪小成    Tags:SqlRunner   点击:(19)  评论:(0)  加入收藏
以下文章来源于信息化与数字化 ,作者沈旸 来源:信息化与数字化导读:熟悉SAP ERP的同学可以从后往前看,有精彩的历史故事。 “开源”对企业应用和生态有什么样的影响? 在Github上...【详细内容】
2022-07-05  数字化企业    Tags:架构   点击:(16)  评论:(0)  加入收藏
自从去年 10 月份搜狗正式被腾讯合并以后,我一直想给大家讲讲腾讯内部目前开发在用的一些技术栈,我想这对同学们有很高的学习价值。但苦于公司内部有明确的规定,不允许私自对外...【详细内容】
2022-06-30  Java高级互联小课堂    Tags:微服务架构   点击:(21)  评论:(0)  加入收藏
2022-06-22  老傅解码  今日头条  Tags:混合云   点击:(24)  评论:(0)  加入收藏
采访嘉宾 | 蔡超、成国柱、谭待编辑|marsxxl在 InfoQ 成立 15 周年之际,InfoQ 编辑部发起了“2007-2022:云、运维、架构、前端的 15 年演进史”特别策划,将和业内专家共同盘点云...【详细内容】
2022-06-21  InfoQ    Tags:软件架构   点击:(32)  评论:(0)  加入收藏
2022-06-20  开猿节流    Tags:架构   点击:(28)  评论:(0)  加入收藏
微服务架构的数据一致性微服务架构下,最好的分布式数据一致性解决方案就是尽量避免分布式事务,然而,在很多场景下,分布式事务是难以避免的。在金融、电信领域中,很多业务场景要求...【详细内容】
2022-06-16  程序员高级码农II    Tags:微服务架构   点击:(33)  评论:(0)  加入收藏
想知道如何设计大型企业级的系统吗?在开始主要的代码开发之前,我们必须选择一种合适的体系架构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,应该先...【详细内容】
2022-06-16  老傅解码    Tags:架构模式   点击:(33)  评论:(0)  加入收藏
站内最新
站内热门
站内头条