JDBC 批量插入数据并返回主键
String sql = "INSERT INTO saas_init_bakeups (" +
" delete_number, table_name, data, organ_sign,create_user)" +
" VALUES(?,?,?,?,?,?)";
DataSource dataSource = jdbcTemplate.getDataSource();
Connection connection = dataSource.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
List<Long> list = new ArrayList<>();
try {
connection.setAutoCommit(false);
ps = connection.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
for (InitBakeupsPo obj : bakeupsPoList) {
ps.setString(1, obj.getDeleteNumber());
ps.setString(2, obj.getTableName());
ps.setBlob(3, string2Blob(obj.getData()));
ps.setString(4, obj.getOrganSign());
ps.setDate(5, date2Sql(obj.getCreateTime()));
ps.setString(6, obj.getCreateUser());
ps.addBatch();
}
ps.executeBatch();
connection.commit();
rs = ps.getGeneratedKeys(); //获取结果
while (rs.next()) {
list.add(rs.getLong(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
ps.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
最终返回的list 即主键列表