SQL返回插入数据的主键id,配置xml的标签属性useGeneratedKeys后仍不能获取,已解决!

在开发中,通过insert语句插入数据后,可以通过设置useGeneratedKeys和keyProperty获取新插入数据的id。方法一是使用useGeneratedKeys和keyProperty,方法二是使用selectKey配合LAST_INSERT_ID函数。注意,id实际被返回到实体类的属性中,而非默认的返回值,该返回值仅表示插入数据的条数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发中遇到一个问题,通过inseret语句插入新数据后,如何获取新插入数据的id,上网查询之后,很容易就获取到解决办法,我尝试了两种

        方法一:

        在mapper.xml的insert标签语句中加入参数 useGeneratedKeys="true" keyProperty="id"

                 其中,useGeneratedKeys表示返回自增主键,keyProperty是Java对象的属性名,而不是数据库表中的字段名。还有一个keyColumn才是数据库表中的字段名,不过这里省略没有用

              

        方法二:

        在mapper.xml的insert标签语句中添加语句:

        <selectKey resultType="integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey>

 两者执行结果如下:

 可以看到插入数据的id为2,而输出i的结果为1

以上哪里错了吗?

我又尝试了许多次调整,最终结果都是这样:并不返回插入数据的id值,结果不是1就是null

都要崩溃的时候,发现了华点:

 原来如此,他把结果返回到了实体类的id中,而不是默认的返回值中,

        默认返回值只是代表成功插入的数据条数。

这么简单,白忙活了这么久,终于大功告成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值