【发布时间】:2026-02-08 15:10:01
【问题描述】:
以下查询工作正常,没有任何问题,因为它只有一列,我可以轻松检查它是否不为空并继续。
String query = "SELECT * FROM test WHERE ID=?";
Test test = template.queryForObject(query,new Object[]{id},
new BeanPropertyRowMapper<>(Test.class));
我正在构建一个网页,我有一个要求,我需要根据用户输入生成动态 queryForObject,其中只有非空列,我该怎么做?
例如在我的网页中,如果我有输入字段如 id、name 和salary,并且如果用户只输入 name 和 ID 而没有输入工资数据,它应该动态生成下面的执行语句
String query = "SELECT * FROM test WHERE ID=? and name=?" ;
Test test = template.queryForObject(query,new Object[]{id, name},
new BeanPropertyRowMapper<>(Test.class));
【问题讨论】:
-
我认为 JDBCTemplate 在这种情况下没有为您提供任何特定的东西。您可能只需要根据具有数据的输入字段动态连接查询文字。
-
我试过了,但我没有收到预期的错误,它失败了。
-
请分享您的尝试。
-
new Object[]{id, name} --> 这个值我不能动态输入,它抛出错误“SQL 状态 [99999];错误代码 [17041];缺少 IN 或索引处的 OUT 参数:: 2;嵌套异常是 java.sql.SQLException: 索引处缺少 IN 或 OUT 参数:: 2"
标签: java spring jdbctemplate