gpt4 book ai didi

java - 使用 Prepared Statement 进行选择性更新

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:32 25 4
gpt4 key购买 nike

我有一个更新 MySQL 表的函数。我需要根据参数是否存在对字段进行选择性更新。这就是我现在的编码方式。

        String sql =  "";
if (employerId > 0) sql = sql + "employerid=?,";
if (status != null) sql += " status=?,";
if(printurl != null) sql += " url=?";
if (sql.endsWith(",")) sql = sql.substring(0, sql.length()-1);
PreparedStatement ps = con.prepareStatement("update employer set "
+ sql
+ "where id=?");

if (employerId > 0) ps.setInt(1, employerId);
if (status != null) ps.setString(2,status);

当我这样做时,如何确定参数索引?根据存在的参数(if 条件),参数索引也会有所不同,对吧?我该如何解决这个问题?在 Java 中有更好的方法来处理这个问题吗?

最佳答案

你能试试下面的静态查询吗?

String sql =  "update employer set employerid=IF(?=0,employerid,?),"+
"status=IFNULL(?,status), url=IFNULL(?,url) " +
"where id=?";

从概念上讲,如果它是 0null,我建议用它自己更新列。这样,您就不需要创建动态查询字符串或动态设置参数。

关于java - 使用 Prepared Statement 进行选择性更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926277/

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