您的位置:首页 > 数据库 > Oracle

JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键

2014-06-03 10:06 405 查看
最近由于 使用的是Spring下的JdbcTemplate 来操作Oracle数据库,主键使用的是序列,但是一般的query和update虽然都能执行INSERT操作语句,但是在碰到需要返回主键ID的情况下时就没办法了。然后百度和Google了很多资料,有的方法完全不行,特别是百度排前面的一些资料。可能是版本问题吧。

环境:

Spring 3.1.2

Oracle 9/10g

首先是写SQL语句:

INSERT INTO TEST (TEST_ID, TEST_NAME) VALUES (SEQ_TEST.NEXTVAL, :testName)


然后最好后面不要加分号(;),碰到过加了分号反而不能运行的情况。

然后给要插入的Bean创建好并赋值:

Test test = new Test();
test.setTestName("Test");


然后执行下面的代码

JdbcTemplate jt = *******;

NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jt);

GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder();
SqlParameterSource paramSource = new BeanPropertySqlParameterSource(test);

namedParameterJdbcTemplate.update(sql, paramSource, generatedKeyHolder, new String[]{"TEST_ID"});

Number number = generatedKeyHolder.getKey();

// 返回的主键
Long id = number.longValue();


上面的那个 new String[]{"TEST_ID"} 就是表示要返回的值的表的列名。JdbcTemplate 就使用你们自己的方法获取就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: