我正在使用spring jdbctemplate将行插入mysql数据库,在批量插入mysql数据库时遇到问题。问题是,在插入第二行时,我的主键出现重复键违规。我已将 USER_KEY 放在批量更新方法中,但Duplicate entry '1' for key 'PRIMARY'
在插入第二行时出现异常。
我的方法没有注释@Transactional
。
注意:- 我需要通过代码生成主键并将其用于更新/删除操作,因此不依赖于 auto_increment。另外 jdbctemplate 批量插入虽然不会返回生成的密钥。
这是我的代码
private static final String USER_KEY = "SELECT LAST_INSERT_ID() FROM USER";
jd.batchUpdate(INSERT_QUERY,
new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int count)
throws SQLException {
Long userId= jd.queryForObject(
USER_KEY, Long.class);
UserDO Userdo = userlst
.get(count);
ps.setLong(1, userId+1);
ps.setString(2, Userdo .getFirstName());
ps.setString(3, Userdo .getLastName());
ps.setString(4, Userdo .getMobile());
ps.setString(5, Userdo .getEmail());
ps.setInt(6, 0);
}
@Override
public int getBatchSize() {
return UserdoLst.size();
}
});
感谢您的宝贵答案。谢谢