最近做一个spring版本3.0.4的老项目功能,应用场景要用到插入oracle表后返回主键ID拿来和其他表关联。
用oralce的可以一直用这种处理方式,高兼容低,搜索网上的资料都不能和这个Spring版本兼容。
public long insertOraGetId(final QuetInvtHeadVO headVO) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { String sql = "insert into table values (seq_quet_invt_id.nextval,?,?,?,?,?,?,?,?,?)"; PreparedStatement ps = conn.prepareStatement(sql,new String[] {"id"}); ps.setString(1, headVO.getHeadType()); ps.setString(XX); return ps; } },keyHolder); return keyHolder.getKey().longValue(); }
new string[] {"id"} 指明返回主键ID。