Как искать строку LIKE 'something%' с помощью Java Spring Framework?

У меня есть таблица 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%, ИМЯ как ': name%'или NAME, например ?%при использовании заполнителей вместо именованных параметров.

Я мог бы быть жестоким и ввести его как

String sql = "select * from FOO where CODE in (:codes) and NAME like '"+namePart+"%'";` 

, но, очевидно, было бы более чем приятно, если бы Spring корректно очищал входные параметры и т. д., понимаете...

Можно было бы подумать, что Spring как-то поддержит это, но Я не могу разобраться.

19
задан Sean Patrick Floyd 19 June 2012 в 15:18
поделиться