Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JdbcTemplate中使用带列表的IN()子句?_Java_Spring_Spring Jdbc - Fatal编程技术网

Java 如何在JdbcTemplate中使用带列表的IN()子句?

Java 如何在JdbcTemplate中使用带列表的IN()子句?,java,spring,spring-jdbc,Java,Spring,Spring Jdbc,我正在尝试使用列表来匹配JdbcTemplate: List foos = jdbcTemplate.query("select * from foo where name IN (?)", new Object[] { Arrays.asList("foo1", "foo2", "foo3")}, new FooMapper() ); 结果:数据库列不匹配,即使name列等于字符串foo1。为什么? 如果可能,使用不带命名参数的JdbcTemplate。设置名称=。。。;

我正在尝试使用列表来匹配
JdbcTemplate

List foos = jdbcTemplate.query("select * from foo where name IN (?)", 
    new Object[] { Arrays.asList("foo1", "foo2", "foo3")}, 
    new FooMapper()
);
结果:数据库列不匹配,即使
name
列等于字符串
foo1
。为什么?

如果可能,使用不带命名参数的
JdbcTemplate

设置名称=。。。;
Set<String> names = ...;

MapSqlParameterSource fooParams = new MapSqlParameterSource();
fooParams.addValue("names", names);

List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE name IN (:names)",
     fooParams, getRowMapper());
MapSqlParameterSource fooParams=新的MapSqlParameterSource(); fooParams.addValue(“名称”,名称); List foo=getJdbcTemplate().query(“从foo中选择*,其中名称位于(:names)”, fooParams,getRowMapper());
是否有不必使用
NamedParameterJdbcTemplate
MapSqlParameterSource
的解决方案?是。列表名称=新的ArrayList()//添加映射名称Map=Collections.singletonMap(“名称”,名称);然后在查询params@membersoundSo中传递namesMap,但我仍然必须使用
NamedParameterJdbcTemplate
?如果可能的话,我正在寻找直接使用
JdbcTemplate
的解决方案。否。它只是将示例中的
newobject[]{array.asList(“foo1”、“foo2”、“foo3”)},
替换为名称映射,即java映射似乎无效。普通JdbcTemplate中没有可以接受这些参数的查询方法!