2017-09-17 14:46
第一个问题:几乎不是。 因为现在数据库操作几乎都使用连接池,从连接池中获取 connection 资源在 close() 时并不是真正关闭连接,而是回收后放入池中,当然,这个回收的操作也有一定的时空消耗,但这个消耗非常小
batch 操作提升性能主要在下面几个方面,第一是客户端每次发送给数据库的数据量(sql与参数)更多,而不是以往的甚至一条一条数据发送并处理。
第二是 batch 通常是使用一条 sql 去应用于本次提交的所有数据,所以对于 sql 的解析操作只有一次,当然,这个在 prepared statment 时也会是相同 sql 共享一次解析,但总有一个 sql 解析结果的获取动作
第三是数据库内部对 batch 操作有针对性的优化,相对于单条数据操作提升处理吞吐量
第二个问题:batch 操作不支持返回 id,这个是底层 jdbc 决定的,可以尝试去 jdbc 的 api 找找是否有现成的 api 支持,记得搞定后回来分享
2017-09-17 14:37
@wu482525 其实异常信息已经提示过了:No database selected