java-如何使用需要2个参数的查询进行batchUpdate,并且其中只有一个存储在列表中
作者:互联网
我使用Spring-JDBC在MySQL数据库中为用户插入Facebook朋友列表.
我有一个包含用户uid的最终Long和一个包含他的朋友列表的List.
我的查询是:
final String sqlInsert="insert into fb_user_friends(fb_uid,friend_uid) values(?,?)";
我使用SqlParameterSourceUtils创建批处理参数
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(friendsList.toArray());
我执行插入操作:
int[] insertCounts = this._jdbcTemplate.batchUpdate(sqlInsert,batch);
这里的问题是列表仅包含查询所需的第二个参数.
我是否需要修改friendsList以便将其添加到另一列,或者还有另一种方法?
谢谢!
解决方法:
这应该有所帮助:http://static.springsource.org/spring/docs/3.0.x/reference/jdbc.html#jdbc-advanced-jdbc
编辑:
final Long uid = 1L;
final List<Long> friendList /* = ... */;
int[] updateCounts = jdbcTemplate.batchUpdate(
"insert into fb_user_friends(fb_uid,friend_uid) values(?,?)",
new BatchPreparedStatementSetter() {
public void setValues(final PreparedStatement ps, final int i) throws SQLException {
ps.setLong(1, uid);
ps.setLong(2, friendList.get(i));
}
public int getBatchSize() {
return friendList.size();
}
});
要么
final List<User> userList /* = ... */;
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(userList.toArray());
int[] updateCounts = simpleJdbcTemplate.batchUpdate(
"insert into fb_user_friends(fb_uid,friend_uid) values(:uid,:friendUid)",
batch);
同
@Data // from lombok
class User {
private Long uid;
private Long friendUid;
}
未经测试,改编自提供的链接样本
标签:spring-jdbc,java,mysql,spring-batch 来源: https://codeday.me/bug/20191010/1884454.html