Привет, у меня есть следующий код.Запрос шаблона Spring jdbc возвращает пустые результаты с несколькими аргументами
public static final MY_QUERY = "Select distinct A.col1, A.col2 from tableA, tableB where A.col1 = ? and A.col2 = ? and b.id = A.id";
в моем коде я в принципе это сделать ...
public List<MyClass> getData(final String input1, final String input2) {
return this.jdbcTemplate.query(MyQuery,
new Object[] { input1, input2},
new int[] {Types.VARCHAR, Types.CHAR}, new MyMapper());
}
Когда я запускаю результаты .. она возвращает пустой список.
Теперь, если я это сделаю.
public static final MY_QUERY_2 = new StringBuilder(96)
.append("Select distinct A.col1, B.col2 from tableA, tableB where A.col1 =").append(input1)
.append(" and A.col2 = ").append(input2).append(" and b.id = A.id").toString();
и внутри моего DAO класса
public List<MyClass> getData() {
return this.jdbcTemplate.query(MY_QUERY_2, new MyMapper());
}
Я получаю три результата.
Что не так с первой реализацией.
Примечание: Если я использую только один аргумент, чем он работает, но если я использую 2, это не так.
Каковы типы данных col1 и col2 в базе данных? VARCHAR и CHAR ?. Кроме того, предпочтительнее первый метод, чем второй, поскольку последний уязвим для атак SQL-инъекций. – toddlermenot
Да, это VARCHAR и CHAR. Я не могу заставить первый метод работать ... поскольку он как-то дает мне пустые результаты. –
Не могли бы вы запустить этот запрос в базе данных и опубликовать результаты? 'select * from v $ sql, где sql_text like '% Select distinct A.col1%'' – toddlermenot