问题描述:当我们在往表中插入一条数据时候,总是需要手动给表的唯一主键ID赋值很麻烦,mybatis-plus中提供了更方便的赋值方式。
如下图,我们创建一个表和对应的bean
这里id上面添加了注解@TableId,并且赋值为IdType.ID_WORKER_STR,我们点开IdType看说明:
再次查看源码,看一下@TableId是如何被调用的:
通过debug,最后定位到MybatisDefaultParameterHandler的populateKeys()方法中,我们看到不同的IdType会调用IdWorker的不同取值方法,进入IdWorker类
可以看到这里的getId是基于twitter的snowflake算法来实现ID的唯一性,而UUID我们是很熟悉的,推荐大家使用Snowflake获取ID的算法。
题外话:这里除了在类上面通过添加注解的方式来自动注入ID的值以外,还可以通过的mybatis全局配置:
如果这里配置以后,bean上面再添加注解,这里的全局配置就失效了,如果没有添加注解,就按照全局配置来。