MybatisPlus之常用注解

文章目录

常用注解:

@TableName

描述: 用于指定数据库表名, 通常在实体类Entity上使用,说明这个类和指定的数据库相关联

例如: @TableName("user"),表明了该类与user数据库相关联

示例:

java 复制代码
@TableName("user")
public class User {
    // 该类与数据库中的 user 表相关联
}

@TableId

描述: @TableId 注解用于指定实体类中哪个属性对应数据库表的主键字段。它还允许指定主键生成策略,如自动递增。

例如: @TableId(value = "id", type = IdType.AUTO),其中 value 表示主键字段名, type 表示主键生成策略

示例:

java 复制代码
@TableId(value = "id", type = IdType.AUTO)
private Long id;

value 表示数据库中的主键字段名,type 表示主键生成策略。

@TableField

描述 : @TableField 注解用于将实体类的属性与数据库表中的非主键字段进行映射。如果属性名与数据库字段名不同,需通过 value 属性指定数据库字段名。此外,还可以通过 exist 属性指定该字段在数据库中是否存在。

例如: @TableField(value = "user_name", exist = true)value 表示数据库中的字段名,exist 表示该字段是否存在, 默认为true, 设置为false表示在数据库中不存在该字段

示例:

java 复制代码
@TableField(value = "user_name")
private String userName;

@TableLogic

描述 :@TableLogic 注解用于指定逻辑删除字段。逻辑删除是指标记数据为删除状态,而不实际删除数据。通常用在软删除功能中。

例如: @TableLogic(value = "0", delval = "1")value 表示未删除状态的默认值,delval 表示删除状态的值

示例:

java 复制代码
@TableLogic(value = "0", delval = "1")
@TableField("deleted")
private Integer deleted;

@Version

描述 :@Version 注解用于指定乐观锁字段。乐观锁是一种并发控制机制,通过版本号字段来防止多个线程同时更新数据时发生冲突

例如: @Version private Integer version

示例:

java 复制代码
@Version
@TableField("version")
private Integer version;

@EnumValue

描述 :@EnumValue 注解用于将枚举类型字段映射为数据库中的具体值。在使用枚举时,通常需要将枚举的某个属性(如整数或字符串)保存到数据库中。

例如: @EnumValue private Integer status

示例:

java 复制代码
public enum UserStatus {
    ACTIVE(1), INACTIVE(0);

    @EnumValue
    private final int value;

    UserStatus(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

@InterceptorIgnore

描述 :@InterceptorIgnore 注解用于忽略 MyBatis-Plus 提供的拦截器功能。例如,忽略租户拦截器、数据权限拦截器等

例如: @InterceptorIgnore(tenantLine = "true"),表示忽略拦截器

示例:

java 复制代码
@InterceptorIgnore(tenantLine = "true")

完整示例代码

java 复制代码
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

// 1. 使用 Lombok 提供的注解来生成常用的代码,如 get/set 方法、无参和有参构造函数
@Data
@NoArgsConstructor
@AllArgsConstructor

// 2. 使用 @TableName 注解将实体类与数据库表进行关联
@TableName("user")
public class User implements Serializable {

    // 3. 使用 @TableId 注解指定主键字段,并定义主键生成策略为自动递增
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    // 4. 使用 @TableField 注解将实体类的属性与数据库中的字段进行映射
    @TableField("user_name")
    private String userName;

    @TableField("email")
    private String email;

    // 5. 使用 @TableLogic 注解指定逻辑删除字段,用于软删除数据
    @TableLogic(value = "0", delval = "1")
    @TableField("deleted")
    private Integer deleted;

    // 6. 使用 @Version 注解指定乐观锁字段,以支持并发控制
    @Version
    @TableField("version")
    private Integer version;

    // 7. 使用 @EnumValue 注解将枚举类型的属性映射为数据库字段的值
    public enum UserStatus {
        ACTIVE(1), INACTIVE(0);

        @EnumValue
        private final int value;

        UserStatus(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    @TableField("status")
    private UserStatus status;
}
相关推荐
杏花春雨江南2 小时前
腾讯云 CVM 上的 SpringBoot 应用避免非法访问
spring boot·云计算·腾讯云
程序员 Andy5 小时前
项目中为什么使用SpringBoot?
java·spring boot·后端
麦兜*13 小时前
Spring Boot 集成 Docker 构建与发版完整指南
java·spring boot·后端·spring·docker·系统架构·springcloud
奔跑吧邓邓子13 小时前
Spring Boot实战:打造高效Web应用,从入门到精通
spring boot·实战·入门到精通
叫我阿柒啊15 小时前
Java全栈开发面试实战:从基础到微服务的深度探索
java·spring boot·redis·微服务·vue3·全栈开发·面试技巧
ashane131416 小时前
Springboot 集成 TraceID
java·spring boot·spring
现在没有牛仔了18 小时前
SpringBoot实现操作日志记录完整指南
java·spring boot·后端
小蒜学长18 小时前
基于django的梧桐山水智慧旅游平台设计与开发(代码+数据库+LW)
java·spring boot·后端·python·django·旅游
Json_18 小时前
使用springboot开发-AI智能体平台管理系统,统一管理各个平台的智能体并让智能体和AI语音设备通信,做一个属于自己的小艾同学~
人工智能·spring boot·openai
智_永无止境1 天前
优雅地实现ChatGPT式的打字机效果:Spring Boot 流式响应
spring boot·后端·流式响应