一、主键策略
这里我转载一下这位大佬的
通过文章我们可以看到主要分成四种,而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;倘若版本号不一样,则就不能更新数据。