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;
}
相关推荐
lang2015092815 小时前
Spring Boot配置属性:类型安全的最佳实践
spring boot
Jabes.yang21 小时前
Java面试场景:从Spring Web到Kafka的音视频应用挑战
大数据·spring boot·kafka·spring security·java面试·spring webflux
程序员小凯1 天前
Spring Boot性能优化详解
spring boot·后端·性能优化
tuine1 天前
SpringBoot使用LocalDate接收参数解析问题
java·spring boot·后端
番茄Salad1 天前
Spring Boot项目中Maven引入依赖常见报错问题解决
spring boot·后端·maven
摇滚侠1 天前
Spring Boot 3零基础教程,yml配置文件,笔记13
spring boot·redis·笔记
!if1 天前
springboot mybatisplus 配置SQL日志,但是没有日志输出
spring boot·sql·mybatis
阿挥的编程日记1 天前
基于SpringBoot的影评管理系统
java·spring boot·后端
java坤坤1 天前
Spring Boot 集成 SpringDoc OpenAPI(Swagger)实战:从配置到接口文档落地
java·spring boot·后端
摇滚侠1 天前
Spring Boot 3零基础教程,整合Redis,笔记12
spring boot·redis·笔记