1

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值)?

4

0 回答 0