NamedJDBCTemplate参数是列表列表

我有一个看起来像这样的查询:

SELECT * FROM someTable t WHERE (ta, tb) IN (VALUES (1, 2), (3, 4)) 

并且它将选择ta == 1 AND tb == 2ta == 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实例化集合,因此我使用了ImmutableMapLists ,但显然你可以按照自己的意愿创建它们。