为了账号安全,请及时绑定邮箱和手机立即绑定

如何有效地使用Spring的JDBCTemplate执行IN()SQL查询?

如何有效地使用Spring的JDBCTemplate执行IN()SQL查询?

白猪掌柜的 2019-08-26 10:41:14
如何有效地使用Spring的JDBCTemplate执行IN()SQL查询?我想知道是否有一种更优雅的方式来使用Spring的JDBCTemplate进行IN()查询。目前我做的是这样的:StringBuilder jobTypeInClauseBuilder = new StringBuilder();for(int i = 0; i < jobTypes.length; i++) {     Type jobType = jobTypes[i];     if(i != 0) {         jobTypeInClauseBuilder.append(',');     }     jobTypeInClauseBuilder.append(jobType.convert());}这是非常痛苦的,因为如果我有九行只是为IN()查询构建子句。我想要像准备语句的参数替换
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你想要一个参数来源:

Set<Integer> ids = ...;MapSqlParameterSource parameters = new MapSqlParameterSource();parameters.addValue("ids", ids);List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)",
     parameters, getRowMapper());

这仅在getJdbcTemplate()返回类型的实例时有效NamedParameterJdbcTemplate


查看完整回答
反对 回复 2019-08-26
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

自2009年以来,许多事情发生了变化,但我只能找到答案,说你需要使用NamedParametersJDBCTemplate。

对我来说,如果我只是做一个,它就有用

db.query(sql, new MyRowMapper(), StringUtils.join(listeParamsForInClause, ","));

使用SimpleJDBCTemplate或JDBCTemplate


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 4006 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信