在执行完set后,插入数据的类型对象的id有了值。 到这里自增id赋值就结束了。 总结 自增id的补偿赋值很好的弥补了同自定义id的不足。但是为什么框架能做到呢。看下面的注释说明 这是JDBC的标准接口,提供了这个口子,在sql执行返回后,可以带上自增id的信息,因此应用层框架可以执行赋值,避免二次查询。 实际项目是采...
原因肯定是mybatisplus用了框架自身的id增长机制,但是不知道怎么控制,所以归根结底还是对框架不熟悉吧。 解决办法就是关掉mybatis自增长,在实体映射类里更改相关注解即可: @TableId(value = "role_id",type = IdType.AUTO) private Long roleId; 注意红色部分,是使用数据库自带的增长策略。 本人遇到问题是因为自...
接下来,验证一番后,发现,Mybatis-Plus在做insert操作时,确实自动生成了一条长19的数字当做该条数据的id插入到MySql,导致虽然MySql表设置了自增,但被该1468844351843872769影响了,导致下一条数据自动递增值变成了1468844351843872770,这种过长的id值,在做索引维护时,很影响效率,故而,这个问题必须得解决。 image.png 到...
解决办法:第一种(推荐): 在主键上面添加注解: @TableId(value="id",type = IdType.AUTO),id为数据库索引字段,重新部署后台程序,然后重新恢复数据库表对应的自增方式,处理历史数据。设置数据库把自动递增改成正常的数字,就是删除现在不正确的数据,然后设置成1,或者改成目前最大的一个数字,比如正常的...
1 先看看是不是自增主键没加注解 (加了哇,没问题哇,怎么还那么大呢) image.png 2.奥对,看看是不是包导错了 似乎也没问题 image.png 再添几条数据试试,id越来越大 突然想到,会不会是之前添加的数据,虽然删除掉了,但是删的是逻辑数据,主键值、索引那些物理数据没被删掉,那就进行截断表的操作: ...
先来看一下Mybatis Plus生成id的自增策略,可以通过枚举IdType设置以下数种策略—— @GetterpublicenumIdType{/** * 数据库ID自增 */AUTO(0),/** * 该类型为未设置主键类型 */NONE(1),/** * 用户输入ID * 该类型可以通过自己注册自动填充插件进行填充 ...
在建表时定义了主键自增初始值也设置为一个二位常数,但是经过mybatis-plus的主键自增注解后会生成一个长度为19位的主键id! 而且在看数据库结构主键自增的初始值也被更改为长度为19位的大数! CREATE TABLE `bas_ship_certificate` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ...
1、实体类定义 注意:在实体类中,通过添加 @TableId 注解,并设置 value 属性为 "id",type 属性为 IdType.AUTO 来定义主键,并采用自增策略。2、解决办法 方法一:使用Mybatis-Plus框架提供的insert方法。方法二:方法三:UserMapperProvider类 3、调用方法获取id说明 方法调用前:方法调用后:
`id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 这里可能会有些疑惑,而且对于GTID的理解会有一些误差,我们在Slave 1节点上插入一行数据。 mysql> insert into t1 values(null,2);这个时候查看自增列的情...