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

如何有效地使用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()查询构建子句。我想要像准备语句的参数替换


白猪掌柜的
浏览 3916回答 3
3回答

胡子哥哥

你想要一个参数来源:Set<Integer>&nbsp;ids&nbsp;=&nbsp;...;MapSqlParameterSource&nbsp;parameters&nbsp;=&nbsp;new&nbsp;MapSqlParameterSource();parameters.addValue("ids",&nbsp;ids);List<Foo>&nbsp;foo&nbsp;=&nbsp;getJdbcTemplate().query("SELECT&nbsp;*&nbsp;FROM&nbsp;foo&nbsp;WHERE&nbsp;a&nbsp;IN&nbsp;(:ids)", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters,&nbsp;getRowMapper());这仅在getJdbcTemplate()返回类型的实例时有效NamedParameterJdbcTemplate

qq_遁去的一_1

自2009年以来,许多事情发生了变化,但我只能找到答案,说你需要使用NamedParametersJDBCTemplate。对我来说,如果我只是做一个,它就有用db.query(sql,&nbsp;new&nbsp;MyRowMapper(),&nbsp;StringUtils.join(listeParamsForInClause,&nbsp;","));使用SimpleJDBCTemplate或JDBCTemplate
打开App,查看更多内容
随时随地看视频慕课网APP