我正在使用Spring JdbcTemplate
接口從MS SqlServer數據庫獲取數據。 在我看到的文檔中有setMaxRows()
方法來爲所有查詢設置一個限制,但是如果我只想限制一個select,該怎麼辦?Spring JdbcTemplate:如何限制選定的行?
有沒有辦法以「可配置」的方式爲特定的調用查詢設置限制?
我正在使用Spring JdbcTemplate
接口從MS SqlServer數據庫獲取數據。 在我看到的文檔中有setMaxRows()
方法來爲所有查詢設置一個限制,但是如果我只想限制一個select,該怎麼辦?Spring JdbcTemplate:如何限制選定的行?
有沒有辦法以「可配置」的方式爲特定的調用查詢設置限制?
限制特定查詢的結果集可以通過將限制直接放入查詢來完成。請諮詢您的數據庫供應商文檔以查看它是否支持例如LIMIT
。
例如在MySQL的:SELECT * FROM EMPLOYEE LIMIT 10
一些基於SQL查詢語言(德比)不支持LIMIT
關鍵字。所以你不能直接在查詢中使用LIMIT。使用Spring JDBC模板,我們可以通過setMaxRows(Integer intvalue)
jdbcTemplate.setMaxRows(1);
查詢您還可以限制用戶的關鍵字設置所需要的最大行數。請參閱下面的查詢
select * from FileShare limit 3 offset 3
如果您的應用程序的限制和偏移可以動態用戶使用配置如下查詢
@Autowired
private JdbcTemplate template;
public JdbcTemplate getTemplate() {
return HibernateUtil.getJdbcTemplate();
}
public List<FileShare> getAllSharedFiless(int limit,int offset)
throws ShareMeException {
String query="select * from FileShare limit ? offset ?";
return getTemplate().query(query,
new SharedFilesRowMapper(),
new Object[]{limit,offset});
}
這裏FileShare
是一個表名和SharedFilesRowMapper
是RowMapper的從表,錶行。
對於這些語句使用自己的PreparedStatementCreator並在創建預準備語句時調用Statement.setMaxRows()會怎樣? – 2012-04-03 08:39:41
@a_horse_with_no_name這似乎是一個好主意,你能否給我提供一些使用'PreparedStatementCreator'的例子,我是Spring的新手...... – davioooh 2012-04-03 10:33:19
我是Spring的新手,否則我會用一個例子添加一個答案: ) – 2012-04-03 11:30:38