我正在使用Spring JdbcTemplate
接口从MS SqlServer DB获取数据。
在文档中,我看到有setMaxRows()
方法为所有查询设置限制,但是如果我只想限制一个选择怎么办?
有没有办法以“可配置”的方式为特定的被调用查询设置限制?
答案 0 :(得分:8)
某些基于SQL的查询语言( derby )不支持LIMIT
个关键字。所以你不能直接在查询中使用LIMIT。使用Spring JDBC Template,我们可以通过setMaxRows(Integer intvalue)
jdbcTemplate.setMaxRows(1);
答案 1 :(得分:3)
可以通过将限制直接放入查询来限制特定查询的结果集。请查阅您的数据库供应商文档,看它是否支持例如LIMIT
。
关于MySQL的示例:SELECT * FROM EMPLOYEE LIMIT 10
答案 2 :(得分:2)
您还可以在查询中限制用户限制关键字。见下面的查询
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,用于列出表中的行。
答案 3 :(得分:0)
setFetchSize
或setMaxRows
与DB SQL中的LIMIT
不同。在fetch size
中设置JdbcTemplate
意味着您的查询结果集将以与setFetchSize
设置的大小的块的形式获取。这是为了控制内存使用率和数据库调用次数。