mysql数据库有一张表(id bigint auto_increment primary key, xx),springboot代码如下:
@Insert({"insert into table(xx) " +
"values (#{xx}"})
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
int save(Data data);
众所周知,我们的insert sql语言不包含id字段,当我们指定useGeneratedKeys=true, keyProperty="id"时调用save方法,对象数据返回id值(插入数据库成功返回有效的 id 值)。
但是插入 sql只返回受影响的行,为什么返回有效的 data.id 值?
如果mybatis没有第二次从mysql查询id,分布式系统如何保证返回mybatis的唯一id?
mybatis是如何实现的?
插入sql后是否查询id??
那么插入sql是否有两个请求数据库(第一个是插入,第二个是查询id值)?