我正在尝试配置一个参数化查询,其效果如下:
SELECT field1 FROM myTable WHERE field2 IN (1,2,3,4)
我使用的数据库是postgres。
此查询运行成功地取消了参数化,但我想使用带有jdbctemplate的参数化查询来填充有效field2值(即整数)的列表。
尝试不同的值 var
( "1,2,3,4"
, "[1,2,3,4]"
, "{1,2,3,4}"
,或 "(1,2,3,4)"
)我尝试了不同的查询:
myJdbcTemplate.query("SELECT field1 FROM field2 IN (?)", new Object[]{ var })
和
myJdbcTemplate.query("SELECT field1 FROM field2 IN (?::integer[])", new Object[]{ var })
还有
myJdbcTemplate.query("SELECT field1 FROM field2 IN ?::integer[]", new Object[]{ var })
另一方面,描述如何参数化查询的资源也非常有用。
所有这些查询都抛出psqlexceptions,指出操作符失败或存在类型不匹配——这似乎是合理的,因为我不知道如何参数化查询。
2条答案
按热度按时间sqserrrh1#
看看SpringDataAccessWeb页面,特别是第11.7.3节,其中介绍了如何使用namedparameterjdbctemplate构建“in”子句。
例如
mrwjdhj32#
我又看了一下手册,它看起来像是搜索数组有一种替代的语法,比如:
可以参数化为: