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

Java 未在单引号内替换命名参数,java,sql,oracle,named-parameters,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 NamedParameterJd

我试图使用命名参数,但当它们位于单引号内时,查询不会替换它们,并且它返回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);
}
受保护的静态最终字符串SQL\u查询=
“选择*\n”+
“来自示例\n”+
“WHERE UPPER(name)LIKE UPPER('%:query%')\n”;
@自动连线
私有名称参数jdbc模板模板;
公共列表getResultFromQuery(字符串查询)引发异常{
返回(列表)模板查询(SQL\U查询,
新的MapSqlParameterSource().addValue(“查询”,查询),ResultTextRactor);
}

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

可能是在单引号内使用的,您需要封装\n表达式'%:query%'可以写为…'+%:query%+'位于单个数量内,也可以是'+%:query%+'

您不需要引号。准备好的语句将为您添加它们。
WHERE UPPER(名称)如“%”| | UPPER(:query)| |“%”
Thankyou@EdGibbs,解决了问题。太好了!很高兴它成功了:)你不需要引号。准备好的语句将为您添加它们。
WHERE UPPER(名称)如“%”| | UPPER(:query)| |“%”
Thankyou@EdGibbs,解决了问题。太好了!很高兴它成功了:)