У меня есть таблица MySQL с Foos. Каждый Foo имеет числовой неповторимый код и имя. Теперь мне нужно найти, имеет ли какое-либо Foo с одним из определенных кодов имя, которое начинается с заданной строки. В обычном SQL это было бы тривиально:
select * from FOO where CODE in (2,3,5) and NAME like 'bar%';
Но как я правильно сделал бы это в Spring сейчас? Без необходимости для "подобного" оператора я бы сделал это следующим образом:
public List<Foo> getByName(List<Integer> codes, String namePart) {
String sql = "select * from FOO where CODE in (:codes) and NAME=:name"
Map<String,Object> params = new HashMap<String,Object>();
params.put("codes", codes);
params.put("name", namePart);
return getSimpleJdbcTemplate().query(sql, new FooRowMapper(), params);
}
Однако при использовании "как" ничего не работает: NAME like :name%
, NAME like ':name%'
или NAME like ?%
при использовании заполнителей вместо названных параметров.
Я мог бы быть жестоким и ввести его как
String sql = "select * from FOO where CODE in (:codes) and NAME like '"+namePart+"%'";`
но, очевидно, было бы более приятным, если бы Spring правильно обработал входные параметры и т.д., вы знаете...
Вы думаете, что Spring будет поддерживать это как-то, но я не могу понять это.