java jdbctemplate查询带有命名参数和行Map器的列表?

yyyllmsg  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(392)

我正在尝试实现一个 Jdbctemplate 将命名参数Map和行Map器作为附加参数的查询方法。
到目前为止,我有以下几点:

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进行这种查询,我该怎么做呢?

vlurs2pr

vlurs2pr1#

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;

相关问题