有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Spring JDBC不允许在调用executeBatch方法时检索生成的键。这是因为它在内部调用了java.sql.PreparedStatementexecuteBatch()方法,该方法只返回受影响的行数。另一种方法是使用executeAndReturnKey方法多次执行insert语句