gpt4 book ai didi

java - 如何使用需要 2 个参数且仅其中一个参数存储在列表中的查询进行批量更新

转载 作者:行者123 更新时间:2023-11-29 14:48:13 24 4
gpt4 key购买 nike

我使用 Spring-JDBC 在我的 MySQL 数据库中插入用户的 Facebook 好友列表。

我有一个包含用户 uid 的最终 Long 和一个包含他的 friend 列表的列表。

我的查询是:

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;
}

未经测试,改编自提供的链接示例

关于java - 如何使用需要 2 个参数且仅其中一个参数存储在列表中的查询进行批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6402246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com