java如何使用SimpleJDCnsert和带有MYSQL JDBC驱动程序的executeBatch获取生成的密钥?
我想一次插入多个记录,并获得每个记录的id,这是自动递增的。我按照下面的方式做,但得到的是更新的行数,而不是生成的键,在本例中,该键是id
public int[] addPersons(List<Person> persons)
{
SqlParameterSource[] records= new BeanPropertySqlParameterSource[persons.size()] ;
int i = 0;
for (Person person: persons)
{
records[i]= new BeanPropertySqlParameterSource(person);
i++;
}
SimpleJdbcInsert insertPerson=new SimpleJdbcInsert(dsource).withTableName("PersonTable").usingGeneratedKeyColumns("id");
int [] ids= insertPerson.executeBatch(records);
return ids;
}
这里的人就是豆子。 那么,对于添加的记录,如何获得自动生成的密钥id呢
# 1 楼答案
Spring JDBC不允许在调用
executeBatch
方法时检索生成的键。这是因为它在内部调用了java.sql.PreparedStatement
的executeBatch()
方法,该方法只返回受影响的行数。另一种方法是使用executeAndReturnKey
方法多次执行insert
语句