2015-08-18 4 views
1

в Spring's NamedParameterJdbcTemplate. как я могу выполнить запрос «Select * from Student», чтобы вернуть список без предоставления каких-либо параметров с использованием Spring версии 3.1.x?
согласно http://docs.spring.io/spring/docs/3.1.2.RELEASE/javadoc-api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.htmlNamedParameterJdbcTemplate - выберите * from

есть

Список запрос (String SQL, Карта paramMap, RowMapper rowMapper)

, но я не хочу, чтобы обеспечить любой paramMap, потому что я делаю "выберите *" ,

как это можно сделать, используя версию 3.1.x?

Благодаря

+0

Вы пробовали просто передать пустую parammap? Если я правильно помню, код использует его только в том случае, если он встречает параметр, который требует замены. Если ваш запрос отсутствует, все может работать нормально даже с пустой картой. –

+0

@ Zeus: Пожалуйста, подумайте о том, чтобы ответить или ответить комментарием, если вы считаете, что это не ответ. – Hille

ответ

0

Вы можете позвонить getJdbcOperations() на вашем NamedParameterTemplate; используя полученный объект, вы можете затем позвонить, например. <T> List<T> query(String sql, RowMapper<T> rowMapper).

Посмотрите документы; поскольку использование вышеупомянутого метода query не использует подготовленный оператор. Вы можете использовать (как упоминается в документе Spring docs) <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) минуя null как args.

Обновление: Исправленный исходный код Spring, и вы можете просто передать пустой paramMap, как предложил Герги.

Обновление 2: Есть ли возможность обновиться до новой версии Spring? Весна 3.2.14, например. имеет метод, который вы ищете.

0

Вот пример:

public List<Organization> getAllOrganization(){ 
    String sql = "SELECT * FROM organization"; 
    List<Organization> orgList = namedParamJdbcTemplate.query(sql, new OrganizationRowMapper()); 

    return orgList; 

} 

Где OrganizationRowMapper:

enter image description here

1

В дополнение к примеру @Kirill Ch, весна BeanPropertyRowMapper, который может отображает значение столбца строку в к собственности, сопоставляя их имена. Убедитесь, что ваше свойство и столбец имеют одинаковое имя. например orgId с именем столбца ORGID или org_id

public List<Organization> getAllOrganization(){ 
    String sql = "SELECT * FROM organization"; 
    List<Organization> orgList = namedParamJdbcTemplate.query(sql, new 
    BeanPropertyRowMapper<>(Organization.class)); 

    return orgList; 
} 
Смежные вопросы