在JDBCTemplate中,我正在调用
public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {
return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper));
}
具有
getJdbcTemplate().query(usersByUsernameQuery, new String[] {username}, new RowMapper<UserDetails>()
我的问题是我只能访问usersByUsernameQuery参数,我想在其中使用两次'username'变量。例如:
usersByUsernameQuery = "Select * from ... ... where someColumn=? or anotherColumn=?"
因为我只传递一个带有一个元素(用户名)的字符串数组,我应该如何构建查询?
最佳答案
您可以在jdbcTemplate中传递同一参数两次。。
getJdbcTemplate().query(usersByUsernameQuery, new String[] {username, username}, new RowMapper<UserDetails>()
这是完全有效的。
或者,如果可以使用不同的jdbcTemplate.query变体,则可以通过以下线程
How to execute IN() SQL queries with Spring's JDBCTemplate effectivly?