美好的一天,
我在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。
请告知如何获取主键。