我是靠谱客的博主 有魅力烧鹅,最近开发中收集的这篇文章主要介绍Statement.RETURN_GENERATED_KEYS获取主键id踩坑记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题背景

项目中多处使用原生JDBC进行数据插入,进行数据insert时会预先生成一个id主键再进行插入,并通过Statement.RETURN_GENERATED_KEYS的方式返回主键id,都能获取正确结果。偶然一次使用该方式对返回值进行处理时,获取到的返回值是受影响的rows,故进行排查。

相关代码
PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

执行结果

问题原因

经过排查,发现能够成功获取主键id的代码中,对应的表结构主键是自增的,设有AUTO_INCREMENT属性,而不能返回主键id的代码,相应表结构并没有自增属性。

源码中说明

源码

总结

在使用Statement.RETURN_GENERATED_KEYS时,需要特别注意,被操作的数据表主键id必须设置AUTO_INCREMENT属性。数据库自增的id和手动插入的id均可正常返回。

最后

以上就是有魅力烧鹅为你收集整理的Statement.RETURN_GENERATED_KEYS获取主键id踩坑记录的全部内容,希望文章能够帮你解决Statement.RETURN_GENERATED_KEYS获取主键id踩坑记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部