测试用的数据库脚本:
java
以上5种方法均可以实现功能,如下是5种方法的优缺点汇总,我的推荐性能要求通常的业务采用第一种方法,性能要求很是高业务采用第五种方法。
sql
方法数据库 |
简介数组 |
优势安全 |
缺点并发 |
方法一oracle |
先用seq.nextval取出值,而后用转入变量的方式插入性能 |
代码简单直观,使用的人也最多测试 |
须要两次sql交互,性能不佳spa |
方法二 |
先用seq.nextval直接插入记录,再用seq.currval取出新插入的值 |
能够在插入记录后返回sequence,适合于数据插入业务逻辑很差改造的业务代码 |
须要两次sql交互,性能不佳,而且容易产生并发安全问题 |
方法三 |
用pl/sql块的returning into语法,用CallableStatement对象设置输出参数取到新插入的值 |
只要一次sql交互,性能较好 |
须要采用pl/sql语法,代码不直观,使用较少 |
方法四 |
设置PreparedStatement须要返回新值的字段名,而后用getGeneratedKeys取得新插入的值 |
性能良好,只要一次sql交互 |
只有Oracle10g才支持,使用较少 |
方法五 |
returning into语法,用OraclePreparedStatement对象设置输出参数,再用getReturnResultSet取得新增入的值 |
性能最好,由于只要一次sql交互,oracle9i也支持 |
只能使用Oracle jdbc特有的OraclePreparedStatement对象 |