头图

大家好!今天我要和大家分享一个非常实用的Java库:enums-spring-boot-starter。这个库能帮助你在数据库操作和接口传参过程中自动转换枚举类型,让你在不同场景中更方便地使用Java枚举类型。

enums-spring-boot-starter 是一个针对 Java 枚举类型的开源项目,它可以帮助你在数据库操作和接口传参过程中自动转换枚举类型。通过使用这个库,你可以更方便地在不同的场景中使用 Java 枚举类型。

主要特性

这个通用枚举处理器分为三个子Module架构来实现不同层面的枚举功能处理, 我们可以按需取用!

  1. enums-core: 枚举核心定义和转换

    • 枚举规范定义
    • 全局枚举Json自动序列化
    • MVC前后端枚举传参转换
  2. enums-conversion: 枚举全局数据库转换映射框架

    • 枚举与数据库数值的转换映射
    • Java对象与数据库Json的转换映射
    • 内置默认基础类型转换器
  3. enums-scanner: 全服务枚举码表扫描器

    • 全局枚举的code&name码表扫描
    • 提供枚举码表数据缓存扩展

enum-starter.png

安装使用攻略

一、最小化引入使用(仅需前后端的传参枚举转换和Json序列化)

在我们的项目中, 如果仅仅是只需要使用到全局处理枚举的一些基础功能, 如前后端传参和获取数据时能自动实现枚举与数值的转换映射
那么我们仅需要本框架包中的enums-core模块部分

使用Maven

在你的 pom.xml 文件中添加以下依赖:


<dependency>
    <groupId>io.gitee.zhucan123</groupId>
    <artifactId>enums-core</artifactId>
    <version>1.1.8-RELEASE</version>
</dependency>

使用Gradle

在你的 build.gradle 文件中添加以下依赖:

implementation 'io.gitee.zhucan123:enums-core:1.1.8-RELEASE'

使用方法

(在此部分提供关于如何在项目中使用该库的具体代码示例)

示例

1.定义我们的枚举

@Getter
@AllArgsConstructor
public enum OrderBillStateEnum implements ExtensionEnum {
    PENDING_AUDIT(1, "待审核"),
    PART_AUDIT(2, "部分审核通过"),
    NOT_PASS(3, "审核不通过"),
    UNCONFIRMED(5, "未确认"),
    UNDER_COMPLAINT(7, "申诉中"),
    CONFIRMED(9, "已确认");

    private final int code;
    private final String name;
    
}
2.前端接受参数枚举(前端传递code值就行)

http://localhost:8080/orders?billState=1


@Data
public class PluginOrderBillQuery {

    @ApiModelProperty("账单审核状态")
    private OrderBillStateEnum billState;

}
3.接口查询出来的数据DTO返回前端时, 定义的枚举会自动转换为code值

@Data
public class PluginOrderBillDTO {

    @ApiModelProperty("账单id")
    private Long id;

    @ApiModelProperty("账单审核状态")
    private OrderBillStateEnum billState;
}

响应体结构示例

{
  "success": 1,
  "message": "",
  "data": {
    "id": 1244,
    "billState": 1
  }
}

二、集成数据库的Enum映射和JSON映射转换

如果我们在使用到全局处理枚举的一些基础功能, 如前后端传参和获取数据时能自动实现枚举与数值的转换映射, 同时也需要枚举能自动与数据的数字类型进行转换时
我们则需要使用enums-conversion框架包 (包含了enums-core核心框架)

使用Maven

在你的 pom.xml 文件中添加以下依赖:


<dependency>
    <groupId>io.gitee.zhucan123</groupId>
    <artifactId>spring-boot-starter-enums-conversion</artifactId>
    <version>1.1.8-RELEASE</version>
</dependency>

使用Gradle

在你的 build.gradle 文件中添加以下依赖:

implementation 'io.gitee.zhucan123:spring-boot-starter-enums-conversion:1.1.8-RELEASE'

使用方法

(在此部分提供关于如何在项目中使用该库的具体代码示例)

示例

1.定义我们的枚举

需要注意其实我们只是需要额外的增加一个@EnumAutoConverter注解就行了


@Getter
@AllArgsConstructor
@EnumAutoConverter
public enum OrderBillStateEnum implements ExtensionEnum {
    PENDING_AUDIT(1, "待审核"),
    PART_AUDIT(2, "部分审核通过"),
    NOT_PASS(3, "审核不通过"),
    UNCONFIRMED(5, "未确认"),
    UNDER_COMPLAINT(7, "申诉中"),
    CONFIRMED(9, "已确认");

    private final int code;
    private final String name;
    
}

三、全服务枚举码表扫描器

在我们服务中存在N多枚举状态等情况下, 我们需要提供一个全局枚举数据扫描器来给我们前端做各种选项候选项值时, 这个就是 enums-scanner(同样包含了enums-core核心框架)

使用Maven

在你的 pom.xml 文件中添加以下依赖:


<dependency>
    <groupId>io.gitee.zhucan123</groupId>
    <artifactId>spring-boot-starter-enums-scanner</artifactId>
    <version>1.1.8-RELEASE</version>
</dependency>

使用Gradle

在你的 build.gradle 文件中添加以下依赖:

implementation 'io.gitee.zhucan123:spring-boot-starter-enums-scanner:1.1.8-RELEASE'

使用方法

(在此部分提供关于如何在项目中使用该库的具体代码示例)

示例

1.定义我们的枚举

需要注意其实我们只是需要额外的增加一个@EnumScan注解就行了, 这个注解标识了我们需要扫描的枚举.


@Getter
@AllArgsConstructor
@EnumScan
public enum OrderBillStateEnum implements ExtensionEnum {
    PENDING_AUDIT(1, "待审核"),
    PART_AUDIT(2, "部分审核通过"),
    NOT_PASS(3, "审核不通过"),
    UNCONFIRMED(5, "未确认"),
    UNDER_COMPLAINT(7, "申诉中"),
    CONFIRMED(9, "已确认");

    private final int code;
    private final String name;
    
}
2. 提供一个Api用来获取全项目枚举数据(通过EnumScanHandler处理器可以得到全项目枚举数据)
@RestController
@RequestMapping
public class EnumsController {

    @Resource
    private EnumScanHandler enumScanHandler;

    @GetMapping("/enums")
    public List<CodeTable> enums(){
        return enumScanHandler.codeTables();
    }
}

响应体结构示例

[{
   "enumName": "OrderBillStateEnum",
   "items": [{
      "code": 1,
      "name": "待审核"
   }, {
      "code": 2,
      "name": "部分审核通过"
   }, {
      "code": 3,
      "name": "审核不通过"
   }, {
        "code": 5,
       "name": "未确认"
    }, {
       "code": 7,
       "name": "申诉中"
     }, {
       "code": 9,
       "name": "已确认"
     }],
   "defaultItem": 1,
   "classPath": "com.zhucan.management.infrastructure.constants.enums.OrderBillStateEnum"
 },{
   "enumName": "AbnormalHandleRoleEnum",
   "items": [{
      "code": 1,
      "name": "Scrum Master"
   }, {
      "code": 2,
      "name": "Product Owner"
   }, {
      "code": 3,
      "name": "Handler"
   }],
   "defaultItem": 1,
   "classPath": "com.zhucan.management.infrastructure.constants.enums.AbnormalHandleRoleEnum"
}, {
   "enumName": "AbnormalCauseTypeEnum",
   "items": [{
      "code": 1,
      "name": "需求分类错误"
   }, {
      "code": 2,
      "name": "租户名称未填写或格式不规范"
   }, {
      "code": 3,
      "name": "出库工时未填写"
   }, {
      "code": 4,
      "name": "出库工时为0,但未出库原因未填写"
   }, {
      "code": 5,
      "name": "需求评估工时不正确"
   }],
   "defaultItem": 1,
   "classPath": "com.zhucan.management.infrastructure.constants.enums.AbnormalCauseTypeEnum"
}]

结论

enums-spring-boot-starter为Java开发人员提供了一种简便的方法来自动转换枚举类型,有效减少了手动转换带来的繁琐与错误。这款库在实际项目中应用广泛,节省了大量时间和精力。如果你还没有尝试过,赶快试试吧!

感谢阅读,希望你在开发过程中也能受益于enums-spring-boot-starter库。如果你对这个库感兴趣,可以前往Gitee查看更多详情。别忘了点赞 和分享给你的朋友们!


すれ_灿卜
1 声望0 粉丝