java获取mysql的自增列_java - MyBatis如何获取Mysql自增id

问 题

INSERT INTO USER(name,age,address,loan_type)

VALUES(#{name},#{age},#{address},#{loanType});

user表中id自增,添加过一条数据后,可以得到主键id;

DEBUG [main] - ==> Preparing: INSERT INTO USER(name,age,address,loan_type) VALUES(?,?,?,?);

DEBUG [main] - ==> Parameters: wrh(String), 26(Integer), 哈哈(String), 123(String)

DEBUG [main] - <== Updates: 1

log信息。

那么问题来了,MyBatis是如何添加完一条数据后得到主键id呢?是insert之后再select嘛,但没有看到select语句呢。

解决方案

@Override

protected Statement instantiateStatement(Connection connection) throws SQLException {

String sql = boundSql.getSql();

if (mappedStatement.getKeyGenerator() instanceof Jdbc3KeyGenerator) {

String[] keyColumnNames = mappedStatement.getKeyColumns();

if (keyColumnNames == null) {

return connection.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);

} else {

return connection.prepareStatement(sql, keyColumnNames);

}

} else if (mappedStatement.getResultSetType() != null) {

return connection.prepareStatement(sql, mappedStatement.getResultSetType().getValue(), ResultSet.CONCUR_READ_ONLY);

} else {

return connection.prepareStatement(sql);

}

}

这一段是Mybatis中PreparedStatementHandler的源码。大概意思是如果使用自动生成主键,并且值keyProperty不为空,Statement最后执行的时候会把keyProperty涉及到的列值返回

992918a26da18f46479e2b9a26bece7f.png

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hosts文件位置在哪里

C:\Windows\System32\drivers\etc\hosts

反转!2019程序员吸金榜来了,AI程序员刷爆了..

前两天在网上发现一个热门话题&#xff1a;“做开发一年&#xff0c;在北京月薪不到1万&#xff0c;有点迷茫。” 其中&#xff0c;这个回答我永远忘不了&#xff1a;在这短短的一条信息里&#xff0c;小编佩服不仅仅是毕业一年的AI程序员拿到年薪60万&#xff0c;而是这一番回…

前端详细设计文档怎么写_UI设计师简历应该怎么写?

像这种分享&#xff0c;常规开篇都应该说说当前的就业趋势啦&#xff0c;分析分析行业形势啦这类的但我不想按流程写行业不论什么时候分析&#xff0c;它都没好过&#xff0c;什么红利期什么风口&#xff0c;那更是从来没赶上过。但凡我能跟点风&#xff0c;我也不能到现在还没…

阿里云携领先SDN能力,亮相全球网络技术盛会ONS

摘要&#xff1a; 网络通讯届盛会Open Network Summit(ONS)于3月29日落下了帷幕。作为开源网络届首屈一指的世界性大会&#xff0c;今年在洛杉矶举办的ONSNA2018已经是第七年举办了。参会者囊括了来自电信运营商、云服务提供商、网络设备制造商、芯片厂商、网络软件开发商、研究…

idea 启动 springBoot debug很慢,正常启动很快是什么原因

原因&#xff1a;项目中有大量的断点 解决方案&#xff1a;删除项目中的断点。 养成好习惯&#xff1a;每次项目启动&#xff0c;把之前的断点去掉。

容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

摘要&#xff1a; 通过阿里云Kubernetes容器服务,开启你的数据服务之旅 &#xff08;一&#xff09;云上运维自建数据库之痛&#xff0c;使用容器服务自动恢复数据库postgresql实例 概述 本文为大家介绍一种容器化的数据服务 posgresql db on ACK&#xff0c;通过使用云盘自动挂…

今日头条技术架构分析

戳蓝字“CSDN云计算”关注我们哦&#xff01;今日头条创立于2012年3月&#xff0c;到目前仅4年时间。从十几个工程师开始研发&#xff0c;到上百人&#xff0c;再到200余人。产品线由内涵段子&#xff0c;到今日头条&#xff0c;今日特卖&#xff0c;今日电影等产品线。一、产品…

mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

贝尔梅尔娜美2019.03.15采纳率&#xff1a;60% 等级&#xff1a;39已帮助&#xff1a;91565人数据库系统的基本概念数据&#xff1a;实际上就是描述事物的符号记录。数据的特点&#xff1a;有一定的结构&#xff0c;有型与值之分&#xff0c;如整型、实型、字符型等。而数据…

dom文档对象手册_HTML5学习之DOM编程

DOM是Document Object Model的缩写&#xff0c;中文名称是文档对象模型。DOM是处理HTML页面的标准编程接口&#xff0c;【前端精选40G资料包赠送co&#xff0c;每日新闻资讯ding,每天进步一点点bb&#xff0c;小写英文为微信】DOM可被JavaScript用来读取、改变HTML的内容和结构…

Kubernetes之路 2 - 利用LXCFS提升容器资源可见性

摘要&#xff1a; 这是本系列的第2篇内容&#xff0c;将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。本系列文章记录了企业客户在应用Kubernetes时的一些常见问题 第一篇&#xff1a;Java应用资源限制的迷思 第二篇&#xff1a;利用LXCFS提升容器资…

mysql数据库模型相应解释_数据库事务系列-MySQL跨行事务模型

说来和MySQL倒是有缘&#xff0c;毕业的第一份工作就被分配到了RDS团队&#xff0c;主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道&#xff0c;但说实话那段时间并没有很深入的理解MySQL内核&#xff0c;做的事情基本都是围绕着MySQL做管控系统&#xff0c;比…

springboot项目jar冲突问题解决

问题&#xff1a;大概意思就是项目中有两个jar&#xff0c;同时是要是想slf4j的接口的&#xff0c;这样程序不知道使用哪个&#xff0c;就会报错了。也不算错&#xff0c;项目照样运行。但是就是报日志错误 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found …

火热的云计算,你知道这些吗?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Dan Muse译者 | 风车云马如今云计算已经渗透到IT的各个领域&#xff0c;从应用程序到基础设施无处不在。为了了解IT领导者是如何规划各自企业的云战略&#xff0c;Insider Pro采访了数百名技术决策者。面对炙手可热的云计算&…

Kubernetes Ingress 高可靠部署最佳实践

摘要&#xff1a; 在Kubernetes集群中&#xff0c;Ingress作为集群流量接入层&#xff0c;Ingress的高可靠性显得尤为重要&#xff0c;今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。 简介 在Kubernetes集群中&#xff0c;Ingress是授权入站连接到达集群服务的规则…

mysql 当前时间戳_kettle教程-mysql数据增量抽取-无需时间戳无需标识

合并记录控件介绍该步骤用于将两个不同来源的数据合并&#xff0c;这两个来源的数据分别为旧数据和新数据&#xff0c;该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。需要设置的参数&#xff1a;

容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

摘要&#xff1a; 容器开启数据服务之旅系列&#xff08;二&#xff09;&#xff1a;Kubernetes如何助力Spark大数据分析 &#xff08;二&#xff09;&#xff1a;Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark OSS on ACK&#xff0c;允许…

spring boot 集成 log4j 解决与logback冲突问题

现在很流行springboot的开发&#xff0c;小编闲来无事也学了学&#xff0c;开发过程中遇见了log4j日志的一个小小问题&#xff0c;特此记载。 首先在pox.xml中引入对应的maven依赖&#xff1a; <!-- 引入log4j--><dependency><groupId>org.springframework.…

mysql in 按顺序排序_mysql in 排序 也可以按in里面的顺序来排序

SQL: select * from table where id IN (3,6,9,1,2,5,8,7);这样的情况取出来后&#xff0c;其实&#xff0c;id还是按1,2,3,4,5,6,7,8,9,排序的&#xff0c;但如果我们真要按IN里面的顺序排序怎么办&#xff1f;SQL能不能完成&#xff1f;是否需要取回来后再foreach一下&#x…

三步走——带你打造一份完美的数据科学家简历|(附件有PPT福利)

摘要&#xff1a; 本文介绍了关于写数据科学家简历的一些技巧&#xff0c;主要包含三个部分&#xff0c;分别为简历前的材料准备&#xff0c;写简历时应注意的地方以及对整个简历的整理。不管你是不是数据科学领域的工作者&#xff0c;本文对于即将求职或找实习的同学而言是一份…

你的目的是什么是谁指使你_电视剧《谁说我结不了婚》第25-27集剧情:魏书帮程璐搞定投资人...

电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25集剧情介绍&#xff1a;程璐向魏书请教感情困扰 田蕾帮徐海峰彻底打垮凯文程璐来找魏书诉苦&#xff0c;小哈最近不但躲着她&#xff0c;还撒谎骗她不在上海&…