我有一个sqlQuery:
select * from products where product_type in :prodTypes
query.setParameter("prodTypes",getInClauseFromList(productTypes));
productTypes是List<String>
public String getInClauseFromList(List list) {
if(list != null && !list.isEmpty()) {
String inClause = Arrays.toString(list.toArray());
inClause = inClause.replace("[", "('").replace("]", "')");
inClause = inClause.replace(", ", "','");
return inClause;
}
return "('')";
}
我收到错误:
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server version for the right
syntax to use near ''(\'clothes\')')
答案 0 :(得分:1)
我建议使用Spring的JDBCTemplate之类的东西。然后,您不必手动将列表转换为字符串。
在上面的示例中,您传入的String是引用的(因为它应该是),因此生成的SQL不正确。
鉴于我不知道哪种类型&#34;查询&#34;是:尝试直接将列表设置为参数。大多数框架都应支持为IN子句正确转换它。