要实现批量插入并返回成功条数,可以使用JdbcTemplate或Spring Data JPA来执行数据库操作。
- 使用JdbcTemplate进行批量插入:
@Autowired
private JdbcTemplate jdbcTemplate;
public int[] batchInsert(List<User> userList) {
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
BatchPreparedStatementSetter batchSetter = new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
User user = userList.get(i);
ps.setString(1, user.getName());
ps.setInt(2, user.getAge());
}
@Override
public int getBatchSize() {
return userList.size();
}
};
return jdbcTemplate.batchUpdate(sql, batchSetter);
}
上述代码中,假设有一个名为User的实体类,包含name和age字段。使用JdbcTemplate的batchUpdate方法执行批量插入操作。具体步骤如下:
- 定义SQL语句,使用占位符 "?" 表示参数。
- 创建BatchPreparedStatementSetter接口的匿名实现类,实现setValues方法设置预编译语句中的参数值,getBatchSize方法返回批处理大小。
- 调用jdbcTemplate的batchUpdate方法,将SQL语句和BatchPreparedStatementSetter对象作为参数传入。
- 方法返回一个整型数组,表示每个批处理操作影响的行数。
- 使用Spring Data JPA进行批量插入:
@Autowired
private UserRepository userRepository;
public int batchInsert(List<User> userList) {
List<User> savedUsers = userRepository.saveAll(userList);
return savedUsers.size();
}
上述代码中,我们假设有一个名为User的实体类,并通过注入UserRepository来执行数据库操作。使用saveAll方法一次性保存所有用户对象,并返回保存成功的用户列表。通过返回列表的大小,即可得到成功插入的条数。
无论你选择使用JdbcTemplate还是Spring Data JPA进行批量插入,最终都能得到成功插入的条数。