十四、【源码】SelectKey返回Insert操作自增索引值

源码地址:https://github.com/mybatis/mybatis-3/

仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/14-selectKey

返回Insert操作自增索引值

分为两部分,解析初始化和使用

拿含有selectkey标签的insert语句解析来说

1.解析部分

  • 解析时看有没有selectkey标签,有的话先解析selectkey的内容,包括对其SQL的解析并封装成一个MappedStatement和创建KeyGenerator放入configuration中
  • 解析insert语句,然后从configuration取出KeyGenerator和语句一起封装成MappedStatement,这里的KeyGenerator是实现这个功能的重点

2.使用部分

  • 正常执行完insert语句
  • 执行完不返回,会取出KeyGenerator执行processGeneratedKeys方法,如果解析的时候有selectkey标签,这里判断能通过就能执行selectkey里面的语句,然后结果通过反射注入到参数中,结果中就能取到

细节点:这两个sql是在同一个线程中,执行第一个insert时已经获取了数据库连接,再执行select时,获取连接的代码加一个是否存在判断,如果已存在就直接返回已存在的数据库连接,这样就能让两个sql在同一个数据库连接中执行了,才能获取到insert后的索引值,否则使用的是两个数据库连接,因为数据库隔离级别的原因,获取不到另一个连接中未提交的数据

相关推荐
这周也會开心10 分钟前
云服务器安装JDK、Tomcat、MySQL
java·服务器·tomcat
hrrrrb1 小时前
【Spring Security】Spring Security 概念
java·数据库·spring
小信丶1 小时前
Spring 中解决 “Could not autowire. There is more than one bean of type“ 错误
java·spring
周杰伦_Jay2 小时前
【Java虚拟机(JVM)全面解析】从原理到面试实战、JVM故障处理、类加载、内存区域、垃圾回收
java·jvm
程序员小凯6 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵6 小时前
基本数据类型
java·算法
_extraordinary_6 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
程序员 Harry7 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java
wxweven7 小时前
校招面试官揭秘:我们到底在寻找什么样的技术人才?
java·面试·校招
陈陈爱java8 小时前
新知识点背诵
java