jdbc获取insert主键

很多时候,当插入一条记录后,希望马上获得插入的主键id,
不少获得这个id的方法是 select max(id) from tablename;
为了获得这个id需要多执行一次sql语句。
PostgreSQL提供了RETURNING语句在插入后立刻获得这个id,具体方法如下:

?
1
INSERT INTO test( name ) values ( 'name' ) RETURNING id;


使用JDBC调用方法
?
1
2
3
4
5
6
7
8
9
String sql = "INSERT INTO test(name) VALUES (?)" ;
PreparedStatement pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
pstmt.setString( 1 , "name" );
pstmt.executeUpdate();
ResultSet generatedKeys = pstmt.getGeneratedKeys();
if (generatedKeys.next()) {
     long id = generatedKeys.getLong( 1 );
     //logger.info("insert id :" + id);
}


使用10万条数据来测试  select max(id) 和 RETURNING 方式,测试结果如下:

?
1
2
3
select max(id)方式: 72
RETURNING     方式: 47
RETURNING方式的性能是select max(id)方式的 1.5


其他数据库Derby, H2, MySQL, SQL Server也支持
?
1
conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
方式来提高插入后获取插入id的性能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值