Spring的JdbcTemplate返回表自增主键值

事情是这样的,在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 表的主键设置为自增

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值