惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
博客园 - 【当耐特】
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
B
Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理

Sunshine

SpringBoot定时任务@Scheduled注解详解 | Sunshine 大端模式、小端模式解析 | Sunshine 机器数、原码、反码、补码解析 | Sunshine Spring事件驱动模型实践 | Sunshine IDEA好用的几款插件 | Sunshine Linux使用yum安装MySQL详细步骤(CentOS7.3) | Sunshine Windows下MySQL解压版安装配置详细步骤 | Sunshine Java使用JDBC连接SQLServer数据库(二) | Sunshine Java使用JDBC连接SQLServer数据库(一) | Sunshine Git基本操作整理 | Sunshine Oracle序列创建和使用 | Sunshine Git批量清理本地分支 | Sunshine GitPages+Hexo搭建个人博客 | Sunshine
Statement.RETURN_GENERATED_KEYS获取自增id踩坑记录 | Sunshine
DongyangHu · 2019-11-29 · via Sunshine

问题背景

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

相关代码

1
PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

问题原因

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

源码中说明

总结

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

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sunshine