【发布时间】:2019-11-09 19:35:13
【问题描述】:
我正在尝试使用 JDBC 仅更新少数列。
try (Session session = getSessionFactory().openSession(); Connection connection = SessionUtil.getDBConnection(session)){
connection.setAutoCommit(false);
String query = "UPDATE Employee SET fname=?, lname=? where id=?";
prepareStatement = connection.prepareStatement(query);
for (Employee employee : employeeList) {
for(int i=1; i<=3; i++){
if(i==1){
prepareStatement.setString(i, employee.getFName());
}
else if(i==2){
prepareStatement.setString(i, employee.getLName());
}
else if(i==3){
prepareStatement.setString(i, employee.getID());
}
}
prepareStatement.addBatch();
}
prepareStatement.executeBatch();
connection.commit();
} catch (Exception e) {
e.printStackTrace();
}
这里我试图只更新 Employee 表中的 fname 和 lname。 但是当我检查生成的 SQL 查询(来自 show_sql 日志)时,我可以看到更新查询在其 set 部分中包含所有列。
有没有办法限制更新的列数。 另外,由于我只更新传递给 PreparedStatement 的查询中的 2 列,难道不应该这样做而不是尝试更新所有列吗?
【问题讨论】:
-
你的
i不会得到价值3,你需要运行你的循环,即for(i=1;i<=3;i++)。 -
@Swati 抱歉打错了。编辑了帖子。但问题还是一样
-
“但是当我检查生成的 SQL 查询时(来自 show_sql 日志)”是什么意思?
标签: java database jpa jdbc prepared-statement