Mybatis-plus学习日记

本文详细介绍了Mybatis-plus中的主键生成策略,包括分布式系统唯一ID生成方案。此外,还探讨了自动填充机制,通过@TableField注解和实现MetaObjectHandler接口来控制字段填充。最后,文章讨论了悲观锁和乐观锁的概念,分析了它们在并发场景下的优缺点。
摘要由CSDN通过智能技术生成

一、主键策略

这里我转载一下这位大佬的

分布式系统唯一ID生成方案汇总

通过文章我们可以看到主要分成四种,而Mybatis-plus(后面简称为MP)主要用到的就是第五种snowflake算法,通
过这种方式,MP会自动生成19位的不重复的ID值

在这里插入图片描述

还有@TableId这个注解,写在主键ID的上面,我们可以点进IdType的源码看下,主要注意三个地方:
 1. NONE和INPUT都是相当于没有设置,需要自己输入ID值(一般都使用INPUT)。
 2. ID_WORKER和ID_WORKER_STR,都是MP自带的主键策略(上面说的生成一个19位的ID值),不同点在于前者是
 	ID为long类型时使用,而后者是为STRING字符串类型时使用(后缀为STR,这里可以看的出来)。不写注解
    @TableId时,会根据你ID的类型来默认使用前者还是后者

在这里插入图片描述在这里插入图片描述

二、自动填充

在这里插入图片描述
1、在属性值上添加注释:@TableField(fill = FieldFill.INSERT):添加时自动填充
@TableField(fill = FieldFill.INSERT_UPDATE):添加和修改时自动填充

2、实现MetaObjectHandler接口
在这里插入图片描述
※注解@Component、@Repository、@Service用处基本一样,都是声明类、接口,让其注入到spring的bean容器中。细微的区别就是:
@Repository用于作用在持久层,也就是平时我们说的与数据库交互的mapper接口。
@Service作用在业务逻辑层层
@Component是最普通的,一般除了持久层和业务逻辑层就使用它

三、悲观锁和乐观锁

悲观锁:事务串行执行,一个个事务轮流执行,效率低下,但很安全。
乐观锁:事务并行执行,多个事务同时执行,效率高,但会出现丢失更新的情况(比如A,B同时对一个数据进行更改,A改完之后立马B进行更改,就会造成A更改的数据的丢失)。而乐观锁就解决了这个问题。它相当于增加了一个版本号,每次去数据进行更新时,会比较当前事务的版本号和数据的版本号,如果一样,才能更新数据,并且更新完之后会自动将版本号 +1;倘若版本号不一样,则就不能更新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值