文章目录
常用注解:
@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;
}