简体   繁体   English

jdbcTemplate.update用于自动递增的唯一ID字段

[英]jdbcTemplate.update for auto incremented and unique ID field

I have an EMPLOYEE table that has 4 fields; 我有一个包含4个字段的EMPLOYEE表; ID , NAME , AGE , SALARY . IDNAMEAGESALARY ID is unique and auto-increment. ID是唯一的,并且会自动递增。

Below is the code to insert a row in the table, using Spring's JDBCTemplate . 下面是使用Spring的JDBCTemplate在表中插入一行的代码。 Please suggest, how can I auto increment ID field. 请提出建议,我该如何自动增加ID字段。

String sql = "insert into employee values (?,?,?,?)"
jdbcTemplate.update( sql, ID, bean.getName(), bean.getAge(), bean.getSalary())

I see, you tag your question Oracle , use Oracle sequence then. 我看到,您将问题标记为Oracle ,然后使用Oracle sequence

String sql = "insert into Employee values (id_seq.nextval, ?, ?, ?)";
jdbcTemplate.update(sql, bean.getName(), bean.getAge(), bean.getSalary());

Ref: How to create Sequence in Oracle . 参考: 如何在Oracle中创建序列

Just add following code to your domain: Ref: http://docs.spring.io/spring/docs/2.5.x/reference/jdbc.html#jdbc-auto-genereted-keys 只需将以下代码添加到您的域中:参考: http : //docs.spring.io/spring/docs/2.5.x/reference/jdbc.html#jdbc-auto-genereted-keys

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

final String INSERT_SQL = "insert into my_test (name) values(?)";
                final String name = "Rob";
                KeyHolder keyHolder = new GeneratedKeyHolder();
                jdbcTemplate.update(
                        new PreparedStatementCreator() {
                            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                                PreparedStatement ps =
                                        connection.prepareStatement(INSERT_SQL, new String[] {"id"});
                                ps.setString(1, name);
                                return ps;
                            }
                        },
                        keyHolder);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM