要实现批量插入并返回成功条数,可以使用JdbcTemplate或Spring Data JPA来执行数据库操作。

  1. 使用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对象作为参数传入。
  • 方法返回一个整型数组,表示每个批处理操作影响的行数。
  1. 使用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进行批量插入,最终都能得到成功插入的条数。