问题背景 偶然发现,在spring中没有启用事务的情况下,执行完oracle存储过程后(过程中写入临时表),依然能读取到临时表内容,这说明两次读取用的是同一个连接。查看HikariCp后发现,连接池会对当前线程所使用的连接做缓存。 获取连接 HikariDataSource在获取数据库连接时,查看threadList是否有可用的连接,有则使用当前线程已经缓存的连接 关闭连接 在关闭连接时,把数据库连接放入threadList,下次该线程继续读取数据库时,优先从threadList取出