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

MybatisPlus中@EnumValue注解介绍、应用场景和示例代码

@EnumValue注解详细介绍

  1. 功能概述

    • @EnumValue注解标记在枚举类型的字段上,表示该字段是枚举值在数据库中存储的实际值。这对于枚举的持久化是关键,确保枚举在数据库中的表示与Java枚举类的一致性。
  2. 主要用途

    • 字段指定:指定枚举类中哪个字段将用于数据库存储。例如,如果一个枚举包含多个字段(如代码和描述),你可以使用@EnumValue指定哪个字段代表实际的存储值。
    • 数据转换:帮助MybatisPlus自动处理枚举与数据库存储值之间的转换,简化持久化逻辑。
  3. 应用场景

    • 当数据库中的某个字段需要存储枚举类型的值(如状态码、类型标识符)时,使用@EnumValue来明确该字段。
    • 使枚举值与数据库中的实际存储值相对应,有助于代码的清晰和一致性。
  4. 示例代码及其解读

import com.baomidou.mybatisplus.annotation.EnumValue;public enum Status {@EnumValueACTIVE(1, "Active"),INACTIVE(0, "Inactive");private final int code;private final String description;Status(int code, String description) {this.code = code;this.description = description;}public int getCode() {return code;}public String getDescription() {return description;}public static Status fromCode(int code) {for (Status status : values()) {if (status.code == code) {return status;}}throw new IllegalArgumentException("Unknown code: " + code);}
}
  1. 详细解释

    • 字段声明code字段上使用了@EnumValue注解,指示该字段是用于数据库存储的实际值。
    • 构造函数:枚举的构造函数接收codedescription,分别用于数据库存储值和描述。
    • fromCode方法:根据存储的code值查找对应的枚举实例,简化从数据库值到枚举对象的转换。
  2. MybatisPlus配置

    • MybatisPlus会在映射时自动识别@EnumValue注解,并将枚举的存储字段用于数据库操作,而不是枚举名称。

配置实体类

假设我们有一个名为 User 的实体类,其中一个字段使用了 Status 枚举类型。

实体类示例
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;@Data
@TableName("user") // 指定数据库表名
public class User extends Model<User> {@TableId // 指定主键字段private Long id;@TableField("username")private String username;@TableField("status")private Status status; // 使用枚举类型字段// 其他字段和方法...
}
配置说明
  1. @TableName

    • 用于指定数据库中的表名。这个注解是可选的,如果实体类名与表名相同,可以省略。
  2. @TableId

    • 标记主键字段。可以指定主键策略(如自增、UUID等),但这在使用 @EnumValue 时并不直接相关。
  3. @TableField

    • 用于指定数据库表中的字段名。默认情况下,字段名与数据库列名相同,但你可以通过这个注解来显式指定。
  4. Status status

    • 这是枚举类型字段。MyBatis-Plus 会根据 @EnumValue 注解来处理这个字段的数据库存储。

使用@EnumValue注解能有效管理枚举在数据库中的持久化,使得枚举类型的存储和读取更加一致和清晰。

http://www.lryc.cn/news/431281.html

相关文章:

  • 【计算机网络】描述TCP建立连接与断开的过程
  • CSS学习14[重点]
  • 力扣 | 递归 | 区间上的动态规划 | 486. 预测赢家
  • 黑白格
  • 数据链路层(MAC地址)
  • 【ruby java】登陆功能/邮件发送模版240903
  • 告别格式不兼容烦恼!ape转换mp3,分享3个简单方法
  • Java核心知识体系-并发与多线程:线程基础
  • KRaft模式下的Kafka启动指南:摆脱Zookeeper依赖
  • 【数据库】MySQL-基础篇-函数
  • dp练习【4】
  • php 实现推荐算法
  • 相机光学(三十六)——光圈
  • 数据结构——树和二叉树
  • 142. Go操作Kafka(confluent-kafka-go库)
  • spring boot(学习笔记第十九课)
  • docker安装 redis 并且加密开启SSL/TLS通道
  • 什么是ARM架构?什么是X86架构?两者的区别是什么?
  • 【vscode】vscode paste image插件设置
  • 自定义string类
  • Python | Leetcode Python题解之第387题字符串中的第一个唯一字符
  • RocketMQ 消费时序列化报错问题分析及解决
  • 全能与专精:探索未来AI模型的发展趋势与市场潜力
  • Python深度学习:【开源数据集系列】ImageNet数据集
  • 微信小程序手写签名
  • Javascript 使用中点查找矩形的角(Find Corners of Rectangle using mid points)
  • 【困难】 猿人学web第一届 第18题 jsvmp 洞察先机
  • IDEA Maven 源修改为国内阿里云镜像的正确方式
  • OpenCV 旋转矩形边界
  • 人车防撞系统安全生产方案