2016-01-13 2 views
2
SELECT * FROM `student` ORDER BY :sortName :sortDir Limit :limitFrom,:limitCount; 

код Java:Binding значение OrderBy не работает с NamedParameterJdbcTemplate

Map<String, Object> paramMap = new HashMap<String, Object>(); 
    paramMap.put("sortName", "%" + sortName + "%"); 
      paramMap.put("sortDir", sortDir); 
      paramMap.put("limitFrom", pageIndex * pageSize); 
      paramMap.put("limitCount", pageSize); 
    List<Student> list = (List<Student>) super.getNamedParameterJdbcTemplate().query(sqlSearch, paramMap, new StudentMapper()); 

protected NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() { 
     return namedParameterJdbcTemplate; 
    } 

вход (pageIndex, PAGESIZE, sortName, sortDir) = (2,2, "Идентификатор", "по убыванию") реальный объем: 8 9 10 11 (с идентификатором) ожидания: 11 10 9 8

ответ

1

Заполнители как ? и :param могут быть использованы только для значений параметров не для имен столбцов, сортировки и целей постраничной. Для этих требований вы должны безопасно объединить строки вместе.

+0

Да, спасибо. У вас есть другой способ использовать весь этот параметр одним способом? Я не хочу разбивать sql. – prdt

+0

Либо разделите sql, либо пойдите для других абстракций, таких как 'Spring Data JPA', который обрабатывает сортировку и разбиение на страницы изящно элегантно –

+0

Спасибо вам за помощь. – prdt

 Смежные вопросы

  • Нет связанных вопросов^_^