Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

网友投稿 748 2022-10-26

Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是1,而不是最新的自增Id。

终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。

举例示范配置

数据库示例表

generator的配置文件

给需要获取自增长id的表配置generatedKey

依据上述配置生成出来的PO Model如下

package yourpackage.model;import javax.persistence.*;@Table(name = "test_gen_key")public class TestGenKey { @Id @Column(name = "product_id") @GeneratedValue(generator = "JDBC") private Integer productId; private String name; private String sex; /** * @return product_id */ public Integer getProductId() { return productId; } /** * @param productId */ public void setProductId(Integer productId) { this.productId = productId; } /** * @return name */ public String getName() { return name; } /** * @param name */ public void setName(String name) { this.name = name == null ? null : name.trim(); } /** * @return sex */ public String getSex() { return sex; } /** * @param sex */ public void setSex(String sex) { this.sex = sex == null ? null : sex.trim(); }}

测试及Debugg

编写测试方法测试插入

插入成功后观察对应的变量对应的值

总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中,而不是返回值!

作者:翎野君

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:为Laravel的Eloquent ORM添加应用程序级别的级联删除
下一篇:自动跟踪您使用哪个应用程序和多长时间
相关文章

 发表评论

暂时没有评论,来抢沙发吧~