java – 参数化查询:检查字段是否在SELECT语句中的值数组中
发布时间:2020-12-15 08:31:13 所属栏目:Java 来源:网络整理
导读:我正在尝试将参数化查询配置为以下效果: SELECT field1 FROM myTable WHERE field2 IN (1,2,3,4) 我正在使用的数据库是Postgres. 此查询成功运行未参数化,但我想使用带有JdbcTemplate的参数化查询来填充列表中的有效field2值(这是整数). 尝试var的各种值(“
我正在尝试将参数化查询配置为以下效果:
SELECT field1 FROM myTable WHERE field2 IN (1,2,3,4) 我正在使用的数据库是Postgres. 此查询成功运行未参数化,但我想使用带有JdbcTemplate的参数化查询来填充列表中的有效field2值(这是整数). 尝试var的各种值(“1,4”,“[1,4]”,“{1,4}”或“(1,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,指示操作符失败或类型不匹配 – 这似乎是合理的,因为我无法弄清楚如何参数化查询. 解决方法
看一下
Data Access web page春季,特别是
11.7.3节,其中使用
NamedParameterJdbcTemplate来构建“IN”条款.
例如 NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); String sql = "select * from emp where empno in (:ids)"; List idList = new ArrayList(2); idList.add(new Long(7782)); idList.add(new Long(7788)); Map parameters = new HashMap(); parameters.put("ids",idList); List emps = jdbcTemplate.query(sql,parameters,new EmpMapper()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |