NamedJDBCTemplate参数是列表列表
我有一个看起来像这样的查询:
SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES (1, 2), (3, 4))
并且它将选择ta == 1 AND tb == 2
或ta == 3 AND tb == 4
任何记录。
这似乎工作得很好。
但是,我无法找到一种干净的方法来为NamedJDBCTemplate
指定参数。 我尝试给它一个列表列表(即List<List>
),但它似乎炸毁了这样做。
val query = "SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES :values)" namedJdbcTemplate.queryForList(query, mapOf("values" to listOf(listOf(1, 2), listOf(3, 4))))
我也尝试手动将值转换为字符串,但这也不会让它变得快乐。
namedJdbcTemplate.queryForList(query, mapOf("values" to "(1, 2), (3, 4)"))
(我实际上在Kotlin工作,但这不应该影响这个问题)
您可以将值作为对象数组的集合传递:
namedJdbcTemplate.queryForList(query, ImmutableMap.of(Lists.newArrayList(new Object[] {1,2}, new Object[]{3,4})));
我们使用Google Guava实例化集合,因此我使用了ImmutableMap
和Lists
,但显然你可以按照自己的意愿创建它们。