Spring Boot 枚举类型属性结合Mybatis Plus使用 您所在的位置:网站首页 springboot结合mybatis Spring Boot 枚举类型属性结合Mybatis Plus使用

Spring Boot 枚举类型属性结合Mybatis Plus使用

#Spring Boot 枚举类型属性结合Mybatis Plus使用| 来源: 网络整理| 查看: 265

Spring Boot 枚举类型属性结合Mybatis Plus使用 前言一、枚举类属性二、使用步骤1.配置2.前端参数接收3.枚举字段数据库映射4.返回参数转化 三、优点1.快捷导航具体枚举类2.自动枚举参数校验3.代码更简洁4.查询数据返回无需遍历枚举转化 总结

前言

项目开发中为避免定义过多的常量,出现0,1等相关魔法数值,造成代码维护困难,通过会定义枚举类,将相关常量值放在一起,如性别枚举类、Redis缓存键枚举类等等。

以下是本篇文章正文内容,简单介绍本人如何在项目中使用枚举对象。

一、枚举类属性

在实体类(其它前端参数类)中作为属性的枚举类型,如下图中的自定义的状态枚举类 StatusEnum,项目中状态统一定义。

public class User implements{ /** * 用户编号 */ @TableId(value = "user_id", type = IdType.AUTO) private Long userId; /** * 用户名称 */ private String userName; /** * 状态,0:正常,1:删除 */ private StatusEnum status; /** * 创建时间 */ private LocalDateTime createTime; } public enum StatusEnum { /** * 未删除 */ NORMAL(0, "未删除"), /** * 已删除 */ DELETED(1, "已删除"), ; /** * 状态值 */ @EnumValue private Integer value; /** * 备注 */ @JsonValue private String remark; } 二、使用步骤 1.配置

项目除了基本的 Spring Boot 依赖,另外加入了 Lombok (简化代码,快速开发)、Mybatis Plus(Mybatis 开发工具包)等等。

org.projectlombok lombok ${lombok.version} provided com.baomidou mybatis-plus-boot-starter ${mybatis-plus-boot-starter.version} 2.前端参数接收

下图中,用户 Controller 定义一个分页查询用户方法,User 实体类作为前端传参的参数接收类(一般定义另外的参数接受类),通过 Spring 的 HttpMessageConverter 转化器(未深入研究)将参数转化为对应类对象,需要保持参数名称一致或者使用相关注解(@JsonAlias、@JsonProperty)。

@PostMapping("/getUserByPage") public GlobalResp getUserByPage( @RequestBody @Validated GlobalPageReq req) { return GlobalResp.success(userService.selectUserByPage(req)); }

枚举类有对应枚举类的参数转换器实现类,目前通过测试发现的转化规则有两种:枚举值列表下标匹配和枚举属性匹配,如下图参数都可以转换为对应 StatusEnum 枚举对象。

"currentPage":1, "pageSize":10, "data":{ "status": 0 // "status": "正常" } }

需要注意的是,当前端传入参数为整型或者整形字符串,默认使用下标转换规则,即按枚举类中枚举值顺序,0 匹配第一个,参数值大于枚举值列表最大下标报异常(该异常需要统一拦截处理),所以建议一般枚举参数使用字符串或者从 0 开始的连续整数,如下图用户性别枚举类使用连续整型值。

public enum GenderEnum { UNKNOWN(0, "未知"), MAN(1, "男"), WOMAN(2, "女"), ; @EnumValue private Integer code; @JsonValue private String msg; } 3.枚举字段数据库映射

项目使用的 Mybatis 数据库映射框架,搭配 Mybatis Plus 工具包,Mybatis Plus 使用枚举字段有两个步骤:枚举扫描配置(配置文件)和枚举字段注解(@EnumValue) 。

# mybatis-plus 配置 mybatis-plus: # 枚举类 @EnumValue 字段映射数据库字段 type-enums-package: top.zitangkou.mycode.model.enum

使用 Mybatis Plus 提供的插入方法插入数据时,会保存 @EnumValue 注解字段的值。

4.返回参数转化

Mybatis Plus 查询返回参数转化为枚举对象,Spring 框架根据 @JsonValue 注解将枚举对应属性字段返回给前端,需要在配置文件配置 。

# mybatis-plus 配置 mybatis-plus: # 数据库查询返回枚举索引匹配 default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler 三、优点 1.快捷导航具体枚举类

可以使用快捷键和鼠标快捷导航至类中的枚举类,查看对应枚举信息。

2.自动枚举参数校验

前端参数若未匹配任一枚举值,会报异常,可以设置异常拦截处理。

3.代码更简洁

代码中使用枚举更加简洁,switch等流程控制语句也更清晰。

4.查询数据返回无需遍历枚举转化

使用 @JsonValue 注解在枚举中需要返回显示的属性上,返回时自动转化。

总结

各个部分的参数转化待深入源码学习。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有