gpt4 book ai didi

java - JDBC 更新查询更新所有列,而实际上我只更新少数列

转载 作者:行者123 更新时间:2023-12-02 09:44:10 26 4
gpt4 key购买 nike

我尝试使用 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 日志)时,我可以看到更新查询在其设置部分中包含所有列。

有没有办法限制更新的列数。另外,由于我只更新传递给PreparedStatement 的查询中的2 列,因此它不应该执行相同的操作而不是尝试更新所有列吗?

最佳答案

您有三个具有相同 isetString 调用,因此您可以使用 getID() 覆盖所有列。只需删除内部 for 循环就可以了:

for (Employee employee : employeeList) {
prepareStatement.setString(1, employee.getFName());
prepareStatement.setString(2, employee.getLName());
prepareStatement.setString(3, employee.getID());
prepareStatement.addBatch();
}
prepareStatement.executeBatch();

关于java - JDBC 更新查询更新所有列,而实际上我只更新少数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796805/

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