命名参数未在单引号内替换

时间:2019-02-07 18:31:13

标签: java sql oracle named-parameters

我正在尝试使用命名参数,但是当我将它们放在单引号内时,它们不会被替换为查询,并且会返回0个结果。如何在单引号内使用参数?

protected static final String SQL_QUERY =
        "    SELECT * \n" +
        "    FROM example \n" +
        "    WHERE UPPER(name) LIKE UPPER('%:query%') \n";

@Autowired
private NamedParameterJdbcTemplate template;

public List<Item> getResultFromQuery(String query) throws Exception {
return (List<Item>) template.query(SQL_QUERY,
                    new MapSqlParameterSource().addValue("query", query), resultSetExtractor);
}

1 个答案:

答案 0 :(得分:0)

可能是在单引号内使用\ n,需要封装\ n,对于表达式'%:query%',您可以将其写为...'+%:query%+'在单引号内,或者可能是'“ +%:query%+”'