Ich versuche, eine Suchfunktion auf der Website zu organisieren, mit dem Spring-jdbc NamedParameterJdbcTemplate.Benannte Parameter funktioniert nicht mit MySql LIKE-Anweisung
public List<PhoneEntry> searchPhoneEntries(String search, String username) {
String SQL = "select * from entries, users where users.enabled=true " +
"and entries.username=:username " +
"and concat(secondName, firstName, patronymic, mobile, tel, " +
"address, entries.email) like ('%:search%')";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("username", username);
params.addValue("search", search);
return jdbcTemplate.query(SQL, params, new PhoneEntryMapper());
}
Aber ich bekomme eine leere Liste und habe keinen Fehler.
Bei Verwendung einer einfachen Verkettung:
"...like '%" + search + "%'";
es richtig funktioniert, aber wie ich verstehe es nicht sicher ist.
Ich habe auch versucht '%' Symbole in Parameter hinzu:
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("username", username);
params.addValue("search", "'%" + search + "%'");
return jdbcTemplate.query(SQL, params, new PhoneEntryMapper());
Aber es nicht arbeiten.
Ja, es funktioniert! Vielen Dank! –