通过KeyHolder插入db2表后获取主键值

时间:2014-07-04 06:02:25

标签: java database db2 primary-key auto-increment

美好的一天,

我在db2中有一个表,其中主is_autoincrement设置为Yes。意味着每次都向这个表插入数据,不需要传入主键值,因为它会自动生成。

但是,我需要在插入后取回主键值。代码如下:

public integer insertRecord() {

    //insertion sql code here
KeyHolder keyHolder = new GeneratedKeyHolder();

PreparedStatementCreatorFactory factory = new PreparedStatementCreatorFactory(
                getInsertBatch2( ), new int[] { 
                        java.sql.Types.TIMESTAMP, java.sql.Types.VARCHAR,
                        java.sql.Types.SMALLINT, java.sql.Types.DATE,
                        java.sql.Types.INTEGER } );

int updated = JdbcTemplate.update(
                factory.newPreparedStatementCreator( params ),  keyHolder);

log.trace("key value is " + keyHolder.getKey( );

    //after insertion, return primary key
    return id;
}

private String getInsertBatch2() {
    StringBuilder sb = new StringBuilder( );
    sb.append( "insert into " )
            .append( getDefaultSchema( ) )
            .append(
                    ".batches( startdatetime, type, manual, processdate, originalbatchid) " );
    sb.append( "values(?,?,?,?,?) " );
    return sb.toString( );
}

插入查询如下:

insert into table1(startdatetime, type, manual, processdate, originalbatchid) value (-- all the value here -- );

当我尝试打印出keyHolder时,它为null。

请告知如何获取主键。

0 个答案:

没有答案