2
我想在網站上使用Spring-jdbc NamedParameterJdbcTemplate組織搜索功能。命名參數不能與MySql LIKE語句一起使用
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());
}
但是我得到一個空的列表並且沒有任何錯誤。
當使用一個簡單的串聯:
"...like '%" + search + "%'";
它正常工作,但據我所知它是不是安全。
我試着也在參數添加 '%' 符號:
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("username", username);
params.addValue("search", "'%" + search + "%'");
return jdbcTemplate.query(SQL, params, new PhoneEntryMapper());
但它不工作過。
是的,它的工作原理!謝謝! –