從git上把代碼拉到本地,代碼執行添加操作報錯Generated keys not requested. You need to specify Statement.RETURN_GENERATED
原代碼:
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql);
int index = 1;
for (Object param : params) {
ps.setObject(index++, param);
}
return ps;
}
解決辦法:prepareStatement方法需要顯示添加一個參數Statement.RETURN_GENERATED_KEYS。
修改後的代碼:
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//顯式添加參數Statement.RETURN_GENERATED_KEYS
int index = 1;
for (Object param : params) {
ps.setObject(index++, param);
}
return ps;
}
原因:從5.1.7版本之後的mysql-connector增加了返回GeneratedKeys的條件,如果需要返回GeneratedKeys,則PreparedStatement需要顯示添加一個參數Statement.RETURN_GENERATED_KEYS保證版本兼容。