当前位置: 首页 > news >正文

MyBatisPlus中使用@EnumValue实现标记枚举类中与数据库字段映射的属性

场景

业务开发中,mysql中某字段为枚举类型,比如某某type、某某状态,

数据库字段中存储int数字,而Java实体中需要使用枚举类型,如何处理其映射关系。

@EnumValue 是 MyBatis-Plus 提供的注解,用于 标记枚举类中与数据库字段映射的属性,

解决 Java 枚举与数据库值之间的转换问题。

核心能力:

将枚举的某个属性(如 code、value)与数据库字段绑定,而非默认的枚举名称(name())。

支持插入、更新、查询时自动转换。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

具体使用示例

(1) 定义枚举类

import com.baomidou.mybatisplus.annotation.EnumValue;public enum UserStatus {ENABLED(1, "启用"),DISABLED(0, "禁用");@EnumValue  // 标记此属性对应数据库字段private final int code;private final String desc;UserStatus(int code, String desc) {this.code  = code;this.desc  = desc;}
}

(2) 实体类中使用枚举

public class User {private Long id;private String name;private UserStatus status;  // 数据库字段自动映射为 code 值(1或0)
}

(3) 数据库表结构

CREATE TABLE user (id BIGINT PRIMARY KEY,name VARCHAR(50),status INT  -- 存储枚举的 code 值(1或0)
);

(4) 实战操作

// 插入数据(数据库存 1)
userMapper.insert(new  User().setStatus(UserStatus.ENABLED));// 查询(自动将 1 转换为 UserStatus.ENABLED)
User user = userMapper.selectById(1);
System.out.println(user.getStatus());   // 输出: ENABLED

核心规则:

@EnumValue 标记的枚举属性值 = 数据库存储值。

当然若使用lombok,可直接如下使用

@Getter
@AllArgsConstructor
public enum WithdrawManagementStatusEnum {PENDING_PAYMENT(0, "待支付"),PAID(1, "已支付"),;@EnumValueprivate final Integer code;private final String message;
}

此时在Java实体中

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class WithdrawManagementDTO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "主键id", example = "6f24b689-3cdf-9c26-1487-ffb9f9f9f35a")private String id;@ApiModelProperty("提现申请时间")private LocalDateTime applyTime;@ApiModelProperty("账单开始时间")private LocalDateTime billingStartTime;@ApiModelProperty("账单结束时间")private LocalDateTime billingEndTime;@ApiModelProperty("提现状态(0-待支付,1-已支付)")private WithdrawManagementStatusEnum withdrawStatus;}

http://www.dtcms.com/a/484492.html

相关文章:

  • 刷东西网站怎么做深圳网站建设有免费的吗
  • C++中#define和const的区别
  • 玫瑰在线 网站建设内容西安网站seo技术厂家
  • 烟台网站建设 制作 推广上海专业高端网站建设服务公司
  • 设计素材网站知乎百度一下你就知道官网网页版
  • 广东省住房和城乡建设厅公众网站怎么去推广自己的平台
  • 学院校园网网站建设情况wordpress文章推荐
  • 建设部国家标准网站深圳专业网站优化公司报价
  • SA8203 输入耐压36V 过流保护0.3-2.5A可调 过压/过流保护器 SOT23-6
  • 深圳做网站的网正邦集团招聘
  • 家庭带宽100m做网站用什么网站做ppt
  • 创意广告视频网站聊城网站seo
  • 网站云空间和普通空间如何做网站详细步骤
  • 保山市住房和城乡建设局门户网站网页设计与网站建设文档
  • 从零起步学习MySQL || 第三章:DML语句定义及常见用法示例
  • 建站公司外包wordpress json 时间
  • php网站开发招招聘网页美工设计实训心得
  • 电子商务网站建设外包服务怎样登录韵网网站
  • 单页营销网站模板无锡app制作
  • seo蒙牛伊利企业网站专业性诊断成都小程序商城开发
  • 万户网站协作管理系统wordpress首页修改路径
  • 免费自助网站用户浏览网站的方式
  • 网站建设购物商城wordpress 咨询主题
  • WordPress强制更换主题佛山seo关键词
  • 如果做网站网站开发技术及特点
  • 齐齐哈尔哪里做网站外贸网站推广建设
  • 服务网站建设方案网络seo哈尔滨
  • 学网站建设语言资料管理系统
  • Bootstrap4 表格详解
  • 网站搜索不到公司网站凡科建站官网登录入口网页版