@TableName

在开发的过程中,我们经常遇到以上的问题,即实体类所对应的表有固定的前缀,例如 t_tbl_ 此时,可以使用 @TableName 指定表前缀

@Data
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

全局配置表前缀

application.yml

mybatis-plus:
  global-config:
    db-config:
      # 设置实体类所对应的表的统一前缀
      table-prefix: t_

@TableId


属性 所对应的字段指定为主键,默认主键名为id

@Data  
public class User {  
    // 将属性所对应的字段指定为主键  
    @TableId  
    private Long uid;  
    private String name;  
    private Integer age;  
    private String email;  
}

参数作用

参数作用
value指定主键的字段名,使用情况为实体类的属性和表属性不一致时
type指定主键策略类型,可以修改自增类型等

type的常用主键策略:
图片-qxtnwruz.png

@TableField

属性 所对应的字段指定为设置的value

@TableField("user_name")  
private String name;

@TableLogic


@TableLogic 是 MyBatis-Plus 框架中的一个注解,用于标识逻辑删除字段。

逻辑删除概念

  • 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到被删除的数据
  • 逻辑删除:假删除,将对应诗句中代表被删除字段的状态修改为 被删除状态,之后在数据库中仍旧能看到此条数据记录

实现逻辑删除

  1. 创建逻辑删除状态列
    图片-qoztyofj.png

  2. 给对应的实体类添加@TableLogic注解

@Data  
public class User {  
    // 将属性所对应的字段指定为主键  
    @TableId(value = "uid")  
    private Long id;  
    @TableField("user_name")  
    private String name;  
    private Integer age;  
    private String email;  
    @TableLogic  
    private Integer isDeleted;  
}

此时查询被删除的SQL语句变成如下:

==>  Preparing: SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0
==> Parameters: 
<==    Columns: id, name, age, email, is_deleted
<==        Row: 6, zhangsan, 18, zhangsan@qq.com, 0
<==        Row: 7, zhangsan, 18, zhangsan@qq.com, 0
<==      Total: 2