jdbc 预编译处理 和spring返回自增主键值

本文介绍如何在Spring框架中使用GeneratedKeyHolder来获取插入数据后的自增长主键值。通过具体示例展示了如何设置SQL语句及参数,并利用GeneratedKeyHolder捕获并返回新增记录的主键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用GeneratedKeyHolder获得新建数据主键值

Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值的方法 :

int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)//该方法返回受影响的行数,同时将新增记录对应主键值赋值给generatedKeyHolder参数

 

Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值。假设我们希望在新增论坛板块对象后,希望将主键值加载到对象中,则可以按以下代码进行调整:

final String INSERT_SQL = "insert into gtable(username,password) values(?,?)"; 
        KeyHolder keyHolder = new GeneratedKeyHolder(); 
    int lines=jdbcTemplate.update(new PreparedStatementCreator() {//创建一个PreparedStatement实例
            public PreparedStatement createPreparedStatement( 
                    Connection connection) throws SQLException {
                PreparedStatement ps = connection.prepareStatement(INSERT_SQL,
                        new String[] { "id" });//通过Connection创建绑定自增值的PreparedStatement
                ps.setString(1, username);//绑定参数时,序号从1开始而不是0
                ps.setString(2, password);
                return ps;
            }
        }, keyHolder);
Number current_key = keyHolder.getKey();
System.out.println("修改行数:"+lines);
System.out.println("当前主键:"+current_key);

 

转载于:https://www.cnblogs.com/vitosun/p/3767325.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值