Получить список предопределенного размера из RowMapper в Spring jdbcTemplate

У меня есть следующий код, в котором я создаю список объектов в соответствии с batchSize
. Может ли кто-нибудь предложить, как это реализовать, я думаю о проверке rownum в классе rowmapper, равном размеру пакета, тогда проблема заключается в том,
как вернуться и создать Список из реализации rowmapper

public class TestAppDao {
public JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {
    return jdbcTemplate ;
}

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

public List<Circle> getAllCircle(int batchSize){
    String sql = "select * from circle";
    return jdbcTemplate.query(sql, new Object[]{}, new CircleMapper());
}

private static final class CircleMapper implements RowMapper<Circle>{

    @Override
    public Circle mapRow(ResultSet resultSet, int rowNum) throws SQLException {

        Circle circle = new Circle();
        circle.setId(resultSet.getInt(1));
        circle.setName(resultSet.getString(2));
        return circle;
    }

}

}


person Abhij    schedule 15.01.2013    source источник
comment
Я думаю, вы могли бы использовать ключевое слово sql limit, чтобы вернуть только желаемое количество кругов.   -  person Luciano    schedule 15.01.2013
comment
Если select возвращает меньше элементов, чем заданный вами размер, является ли это ошибкой?   -  person Abhinav Sarkar    schedule 15.01.2013
comment
Исправьте Abhinav, ранее я использовал счетчик при повторении через resultSet.next(), когда счетчик равен размеру, прерывая цикл и возвращая список объектов   -  person Abhij    schedule 15.01.2013


Ответы (1)


Я думаю, что у вас есть в основном 2 варианта:

Однако второй вариант не гарантирует, что с сервера DB будет возвращено только определенное количество результатов, так как лишние могут быть просто вырезаны самим JDBC => он может быть менее производительным (в случае с оракулом см.: Как ограничить количество строк, возвращаемых из Oracle на уровне источника данных JDBC?)

Я считаю вырезание его в вашем коде худшим вариантом, так как вам нужно перебирать его самостоятельно, кроме того, у вас нет прироста производительности (всегда выбирайте все из БД).

person Peter Butkovic    schedule 15.01.2013