java - JdbcTemplate “查询”在 Spring 中已弃用。动态参数的解决方法是什么?
问题描述
JbdcTemplate - 使用动态 SQL 查询的 PreparedStatements 正是我所做的,但是 jdbctemplate.query 已被贬低,您不能将其传递给对象,而是应该使用 varargs 方法。 JdbcTemplate "queryForObject" 和 "query" 在 Spring 中已弃用。应该用什么代替?
但就动态查询而言,我有未知数量的参数,所以在这种情况下我应该怎么做
仅供参考,代码正在运行,它只是被弃用了。
private JdbcTemplate jdbcTemplate;
List<QueryResults> jdbcQuery(QueryParams queryParams) {
/* base query */
StringBuilder sqlQuery = new StringBuilder("Select * from table where 1=1 ");
/* stores the dynamic preparedStatement arguments */
List<String> queryArgs = new ArrayList<>();
if(someCondition){
sqlQuery.append("And column1 = ? ");
queryArgs.add(queryParams.value1);
}
if(someCondition2){
sqlQuery.append("And column2 = ? ");
queryArgs.add(queryParams.value2);
}
if(someCondition3){
sqlQuery.append("And column3 = ? ");
queryArgs.add(queryParams.value3);
}
//etc...
/* this is the part I used from the above stackoverflow question */
Object[] preparedStatementArgs = new Object[queryArgs.size()];
for(int i = 0; i < preparedStatementArgs.length; i++){
preparedStatementArgs[i] = queryArgs.get(i);
}
/* Lastly, execute the query */
return this.jdbcTemplate.query(sqlQuery.toString(),
preparedStatementArgs, (rs, rowNum) -> {
QueryResults result = new QueryResults();
/* store the results of the query... */
});
}
这就是代码现在的样子
解决方案
推荐阅读
- c++ - QProcess 无法通过 QPushButton 执行终端行命令
- javascript - 悬停在内容/正文上时保持弹出悬停内容打开
- javascript - 在hapi/joi。如何将 2 个不同的模式验证合二为一?
- laravel - 跟踪结束后是否可以将用户订阅设置为非活动状态?Laravel 收银员-条纹
- dependency-injection - 在 Prism 应用程序 DI 容器中注册装饰类型
- tensorflow - 为什么 tf.divide 不返回张量
- kubernetes - 什么时候需要多个容器平台集群或只有一个云就足够了?
- javascript - 如何将 Material UI Props 中的 TextfieldProps 用于 React 应用程序?
- maven - 如何在 maven 项目中添加 groovy 3.0.3 作为 maven 依赖项?
- python - tf.keras - 仅将特定层应用于特定功能