我想将来自请求参数的字符串列表作为单个参数传递给preparedStatement.setObject()。这里我将对象列表转换为单个字符串。
因此,在将这个转换后的字符串传递给 setObject 方法时,它会将 ' 转换为 \'。
所以我的查询是这样的:
select * from category where category IN (?)
for (int counter = 0; (!sqlParams.isEmpty()) && counter < sqlParams.size(); counter++) {
System.out.println(sqlParams.get(counter));
stmt.setObject(counter + 1, sqlParams.get(counter));
System.out.println(stmt.toString());
}
这里 sqlParams.get(counter) 给我以下价值。
'Adult', 'Classic', 'Fantasy', 'Mystery'
但是当我使用 stmt.setObject() 并打印 stmt 的值时,它显示以下值:
'\'Adult\', \'Classic\', \'Fantasy\', \'Mystery\''
所以在查询形成是这样的:
SELECT * FROM mytable WHERE category IN ('Adult\', \'Classic\', \'Fantasy\', \'Mistry\'');
还有其他方法可以解决这些方法,例如传递单个字符串,然后为每个单独的字符串执行查询。但这会增加我的代码的时间复杂度。任何人都可以建议我解决这个问题吗?