MyBatis-Plus 常用注解

MyBatis-Plus 常用注解

​ MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus官方推荐在 SpringBoot 工程中使用。

1. @TableName

作用:指定类为哪个表的实体类

位置:实体类上方

//数据库表名为t_student,实体类名为Student
@TableName(value = "t_student")
public class Student {
2. @TableId

作用:指定实体类的属性为主键

位置:属性上方

属性:

  • value:主键字段名
  • type:主键策略,有以下几种
描述
NONE无状态,不设置主键类型
AUTO自增主键
INPUT插入前自行设置主键值
ASSIGN_ID默认策略,使用雪花算法自动生成主键 ID,主键类型为整形或字符串。
(雪花算法:微博开源的分布式 ID 生成算法,使用一个64位的 Long 类型数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增)
ASSIGN_UUID自动生成排除中划线的 UUID 作为主键,主键类型为字符串。
@TableId(value = "sid", type = IdType.AUTO)
private Integer id;
3. @TableField

作用:在属性和列名不同的情况下,指定映射关系

位置:非主键属性上方

属性:

  • value:非主键字段名
  • fill:自动填充,自动填充功能可以在插入或修改的时候为对象属性自动赋值。主要用于类似创建时间、修改时间这种每次插入或更新操作都需要塞值得情况,以及逻辑删除字段也可以使用自动填充功能。填充策略如下:
描述
DEFAULT默认不处理
INSERT插入操作填充字段
UPDATE更新操作填充字段
INSERT_UPDATE插入操作和更新操作均填充字段

① 首先为实体类的自动填充字段添加 @TableField 注解

/**
 * 创建时间
 */
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
/**
 * 更新时间
 */
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

② 自定义填充类实现 MetaObjectHandler 接口

@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}
4. @TableLogic

作用:在使用逻辑删除的时候使用该注解

位置:逻辑删除属性上方

逻辑删除是指不会在数据库进行物理删除数据,而是通过一个变量代表它被删除。

idnameemailgenderagedeletedversion
1小明ming@q.comm2300
2小红hong@q.comf2200
3小赵zhao@q.comm2500
4小米mi@q.comf2800
5小胖pang@q.comm3200
deleted属性代表该数据是否删除,0代表未删除,1代表已删除。此时增删改查的Sql语句发生变化:
插入: 不作限制
查找: 追加where条件过滤掉已删除数据。
更新: 追加where条件防止更新到已删除数据。
删除: 转变为更新

例如:
删除: update student set deleted=1 where id = 1 and deleted=0;
查找: select id,name,deleted from student where deleted=0;

逻辑删除之后,SQL 语句会发生变化,但是使用 MyBatis-Plus 是不需要我们自己写 SQL 语句的,所以需要在配置文件中配置即可。MyBatis-Plus 配置文件如下:(同时也加入了开启 SQL 日志打印配置和全局配置

# mybatis-plus相关配置
mybatis-plus:
  configuration:
    # 开启SQL日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 全局配置
  global-config:
    db-config:
      # 全局逻辑删除的字段名
      logic-delete-field: deleted
      # 逻辑已删除值(默认为 1)
      logic-delete-value: 1
      # 逻辑未删除值(默认为 0)
      logic-not-delete-value: 0
      
      #下面配置可以为数据库所有表与实体类对应,可以不用配置(不常用)
      #主键类型,自增
      id-type: AUTO
      # 设置表名前缀,数据库表以tb_开头
      table-prefix: tb_
      # 是否使用驼峰转下划线命名,默认开启
      table-underline: true

最后就是将 @TableLogic 注解加到对应的实体类属性上方:

@TableLogic
private Integer deleted;
5. @Version

作用:在使用 MyBatis-Plus 乐观锁插件时使用

位置:属性上方

乐观锁:乐观锁在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。

MyBatisPlus乐观锁插件实现方式:

  • 取出记录时,获取当前 version
  • 更新时,带上这个 version
  • 执行更新时, set version = new Version where version = oldVersion
  • 如果version不对,就更新失败

关于 MyBatis-Plus 的乐观锁插件,这里就不展开详细的说明了。只对此注解进行简单的介绍。

@Version
private Integer version;
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真真的是小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值