Spring JdbcTemplate: как ограничить выделенные строки? - PullRequest
7 голосов
/ 30 марта 2012

Я использую интерфейс Spring JdbcTemplate для извлечения данных из БД MS SqlServer. В документации, которую я вижу, есть метод setMaxRows() для установки ограничения для всех запросов, но что если я хочу ограничить только выбор?

Есть ли способ установить ограничение только для определенного вызванного запроса "настраиваемым" способом?

Ответы [ 4 ]

8 голосов
/ 23 июля 2015

Некоторые языки запросов на основе SQL ( derby ) не поддерживают ключевое слово LIMIT. Таким образом, вы не можете использовать LIMIT в запросе напрямую. Используя Spring JDBC Template, мы можем установить максимальное количество строк, необходимое через setMaxRows(Integer intvalue)

jdbcTemplate.setMaxRows(1);
3 голосов
/ 30 марта 2012

Ограничение результирующего набора определенного запроса может быть сделано путем помещения ограничения непосредственно в запрос.Обратитесь к документации поставщика БД, чтобы узнать, поддерживает ли он, например, LIMIT.

Пример на MySQL: SELECT * FROM EMPLOYEE LIMIT 10

2 голосов
/ 11 сентября 2015

Вы также можете ограничить количество ключевых слов в запросе. см. ниже запрос

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, который выводит строки из таблицы.

0 голосов
/ 02 января 2019

setFetchSize или setMaxRows - это не то же самое, что LIMIT в БД SQL. Установка fetch size в JdbcTemplate означает, что набор результатов вашего запроса будет выбираться кусками размера, установленного с setFetchSize. Это позволяет контролировать использование памяти и количество вызовов базы данных.

...