java - 带有命名参数和行映射器的列表的Java Jdbctemplate查询?
问题描述
我正在尝试实现一个Jdbctemplate
查询方法,它将一个命名参数映射和一个行映射器作为附加参数。
到目前为止,我有以下内容:
final SqlParameterSource namedParameters = new MapSqlParameterSource().addValue("searchTerm", "%" + text + "%");
List<Map<String, String>> result = (List<Map<String, String>>)jdbcTemplate.queryForList(query, namedParameters, (ResultSet rs) ->
{
List<Map<String, String>> rows = new ArrayList<>();
while (rs.next())
{
Map<String, String> row = new HashMap<>();
for (int x = 0, j = queryColumns.length; x < j; x++) {
row.put(queryColumns[x], rs.getString(queryColumns[x]));
}
rows.add(row);
}
return rows;
});
return result;
这给了我以下错误:
错误:(67, 83) java: 找不到适合 queryForList(java.lang.String,org.springframework.jdbc.core.namedparam.SqlParameterSource,(ResultSet[...]ws; }) 方法 org.springframework 的方法。 jdbc.core.JdbcTemplate.queryForList(java.lang.String,java.lang.Class) 不适用(无法推断类型变量T(实际和形式参数列表的长度不同))方法org.springframework.jdbc .core.JdbcTemplate.queryForList(java.lang.String,java.lang.Object[],int[],java.lang.Class) 不适用....
是否可以使用 Jdbctemplate 进行这种查询,我该怎么做?
解决方案
通过 NamedParameterJdbcTemplates 支持命名参数。你可以使用类似的东西:
final Map<String, Object> namedParameters = Collections.singletonMap("searchTerm", "%" + text + "%");
List<Map<String, String>> result = new NamedParameterJdbcTemplate(jdbcTemplate).query(query, namedParameters, (rs, rowNum) ->
{
Map<String, String> row = new HashMap<>();
for (int x = 0, j = queryColumns.length; x < j; x++) {
row.put(queryColumns[x], rs.getString(queryColumns[x]));
}
return row;
});
return result;
推荐阅读
- node.js - 我的 async/await 函数没有在 AWS Lambda 中等待。我错过了什么?
- wordpress - 将跟踪脚本添加到 Woocommerce
- java - “线程“主”java.util.NoSuchElementException 中的 jException:未找到行”
- r - R中的“函数错误(类型,msg,asError = TRUE)”
- python - Python 端口扫描器挑战
- angular - 我可以扩展 Angular @Injectable 装饰器吗?
- html - html 表格单元格中的新行 (\n)
- shell - 在 BigQuery 脚本中传递参数
- android - 如何在 MainActivity 中写入颜色 id?(科特林)
- docker - 使用 centos-quarkus-maven:19.2.1 生成原生镜像 quarkus rest-client-quickstart 失败