Spring JdbcTemplate:如何限制选定的行?

时间:2012-03-30 10:45:52

标签: java spring jdbc jdbctemplate

我正在使用Spring JdbcTemplate接口从MS SqlServer DB获取数据。 在文档中,我看到有setMaxRows()方法为所有查询设置限制,但是如果我只想限制一个选择怎么办?

有没有办法以“可配置”的方式为特定的被调用查询设置限制?

4 个答案:

答案 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)

setFetchSizesetMaxRows与DB SQL中的LIMIT不同。在fetch size中设置JdbcTemplate意味着您的查询结果集将以与setFetchSize设置的大小的块的形式获取。这是为了控制内存使用率和数据库调用次数。