我正在尝试适应 Spring JDBC,但是我的错误是使用这些匿名类,我们不能传递任何局部变量,除非它们是最终的,这可能很容易安排,但是如果我需要循环数组或集合呢? ? 我不能将“FedModel fm”声明为最终的,因为它在循环中重新初始化,但我需要调用执行方法 100 次。这是我遇到问题的具体场景,因为我不知道如何将 BLOB 插入数据库。
for (int i = 0; i < fedModels.size(); i++) {
FedModel fm = fedModels.get(i);
jdbcTemplate.execute("INSERT INTO items (name, video_blob) VALUES (?, ?)",
new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
protected void setValues(PreparedStatement ps, LobCreator lobCreator)
throws SQLException {
ps.setString(1, fm.getName());
ps.setString(2, fm.getDifficultyLevel());
ps.setString(3, fm.getEquipment());
lobCreator.setBlobAsBinaryStream(ps, paramIndex, contentStream, contentLength);
}
});
}
我唯一能想到的就是创建一个静态嵌套类,它扩展 AbstractLobCreatingPreparedStatementCallback 并为 fedModels 添加构造函数,以便我可以在里面进行循环。但是只使用 JDBC 会更容易。