Ho un tavolo MySQL con Foos. Ogni Foo ha un codice numerico non univoco e un nome. Ora ho bisogno di trovare se qualche Foo con uno di certi codici ha un nome che inizia con una determinata stringa. In SQL normale questo sarebbe banale:Come cercare stringa LIKE 'qualcosa%' con Java Spring Framework?
select * from FOO where CODE in (2,3,5) and NAME like 'bar%';
Ma come dovrei farlo correttamente in Primavera ora? Senza la necessità per l'operatore 'come' lo farei in questo modo:
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);
}
Tuttavia, con 'come' nulla sembra funzionare: NAME like :name%
, NAME like ':name%'
, o NAME like ?%
quando si utilizzano i segnaposti invece di parametri denominati.
potrei essere brutale e inseriscilo come
String sql = "select * from FOO where CODE in (:codes) and NAME like '"+namePart+"%'";`
ma ovviamente sarebbe più bello se Primavera avrebbe sanificare i parametri di input correttamente, ecc, sai ...
Si potrebbe pensare Spring lo sosterrebbe in qualche modo ma non riesco a capirlo.
il lavoro per me, se io uso: "select * from FOO in cui il codice a (: codici) e NOME come "+ namePart +" '%' "; – navy