Использование более одного аргумента в предложении where JdbcTemplate
Я использую этот код ниже, и он работает хорошо. В этом случае я использую только одно предложение, где вы можете видеть:
@Autowired
private JdbcTemplate jdbcTemplate;
public ObjectTest serach(String x) {
return jdbcTemplate.queryForObject("SELECT TOP 1 field1\n" +
" ,field2\n" +
" ,field3\n" +
" FROM [BD].[TEST].[TABLE]\n" +
" where field1 = ?", new Object[]{x},
(rs, rowNum) -> new ObjectTest (
rs.getInt("field1"),
rs.getString("field2"),
rs.getString("field3")
));
}
В этом случае, просматривая некоторую документацию и примеры, я понял, что мне нужно только написать "где field1 =?", Новый Object[]{x}, когда у меня есть один аргумент в предложении where, но теперь я хотел бы Я хотел бы иметь более одного (например, значения x и y), я имею в виду использование оператора AND, и я не нахожу правильный синтаксис для этого.
1 ответ
Вы должны просто быть в состоянии сделать:
...
public ObjectTest serach(String x. String y) {
return jdbcTemplate.queryForObject("SELECT TOP 1 field1\n" +
" ,field2\n" +
" ,field3\n" +
" FROM [BD].[TEST].[TABLE]\n" +
" where field1 = ?\n" +
" and field2 = ?", new Object[]{x, y},
...
И это будет населять ?
обычно на основе вашего входного массива.
Тем не менее, я бы взглянул на NamedParameterJdbcTemplate
( см. пример в документации). Это чище, потому что вы сможете написать свой запрос с ?
аргументы как имена, т.е. :field1
,