Spring的JdbcTemplate返回表自增主键值

本文介绍了如何在数据库的1对N表关系中,利用1方表的自增主键作为N方表的外键。通过使用Java的JdbcTemplate和PreparedStatementCreator实现插入操作,并获取返回的自增主键用于后续操作。

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

事情是这样的,在1对N对N的表关系中,要用1方表自增生成的主键作为N方表的外键,因此插入1方表insert方法的返回值为主键值,这样可以用返回值插入N方表

代码如下

 public int add(final Message message)
    {
        KeyHolder keyHolder = new GeneratedKeyHolder();
        getJdbcTemplate().update(new PreparedStatementCreator(){
            final String sql="insert into message (msgContent,sendTime) values(?,?)";
                       public PreparedStatement createPreparedStatement(java.sql.Connection conn) throws SQLException{
                            PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 
                            ps.setString(1, message.getMsgContent());
                            ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
                            return ps;
                        }
                    },
                    keyHolder);
    return keyHolder.getKey().intValue();
    }

注意导包不能导错:

import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

import org.springframework.jdbc.core.PreparedStatementCreator;

另外别忘了message 表的主键设置为自增

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值