我可以做這樣的事情:我可以讓JDBCTemplate擴展一個用於in()子句的列表參數嗎?
select * from mytable m where m.group_id in (?)
...,並通過在列表或參數數組中的我的參數進行擴展,即:
select * from mytable m where m.group_id in (1,2,3,4)
具體來說,我使用Spring和JdbcTemplate/SimpleJdbcTemplate類。
我可以做這樣的事情:我可以讓JDBCTemplate擴展一個用於in()子句的列表參數嗎?
select * from mytable m where m.group_id in (?)
...,並通過在列表或參數數組中的我的參數進行擴展,即:
select * from mytable m where m.group_id in (1,2,3,4)
具體來說,我使用Spring和JdbcTemplate/SimpleJdbcTemplate類。
對不起,不能這樣做。據我所知,你可以自己寫一個方便的方法來做到這一點,但沒有像Hibernate那樣的setParameterList()
。
最簡單的便捷方法,對於數字類型列表可能是list.toString()。replace(「[」,「(」)) .replace(「]」,「)」) – Stewart 2013-06-03 09:30:54
您可以通過使用NamedParameterJdbcTemplate來完成。是的,你可以在Spring 3使用命名參數
NamedParameterJdbcTemplate db = ...;
List paramList = ...;
Map idsMap = Collections.singletonMap("ids", paramList);
db.query("select * from mytable m where m.group_id in (:ids)", idsMap);
謝謝!值得一提的是,NamedParameterJdbcTemplate可以通過一個星型JdbcTemplate創建: NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate); – Ivo 2015-06-08 14:26:25
:
與樣品它會去像。
見http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html#jdbc-in-clause
應該採取元的任何列表和擴展列表。請注意,您的列表不會超過您的數據庫支持的最大大小。 (Oracle限制爲1000)。像這樣的東西應該工作:
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(2);
ids.add(3);
Map<String,Object> params = new HashMap<String, Object>();
String sql = "SELECT PERSON.ID, PERSON.USERNAME, PERSON.EMAIL_ADDRESS, PERSON.FIRST_NAME, PERSON.LAST_NAME, PERSON.ACCOUNT_STATUS FROM PERSON WHERE ID IN (:ids)";
params.put("ids",ids);
return getSimpleJdbcTemplate().query(sql, rowMapper, params);
請找到下面的代碼
public Collection<Employee> findByIds(List<String> ids) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("ids", ids);
List<Employee> employees = namedParameterJdbcTemplate.query(
"SELECT * FROM trn_employee where employee_id IN (:ids)",
params,
ParameterizedBeanPropertyRowMapper.newInstance(Employee.class));
return employees;
}
我的回憶是否 - ''佔位符表示一個值,因爲它會在SQL,因此它不能包含哪些內容?一個逗號分隔的列表。 – 2010-08-31 23:17:16
可能的重複都是http://stackoverflow.com/questions/1981683/how-to-generate-a-dynamic-in-sql-list-through-spring-jdbctemplate和http://stackoverflow.com/questions/1327074 /如何在sql-queries-with-springs-jdbctemplate-effectivly中執行 – Stewart 2013-06-03 09:29:26