Использование более одного аргумента в предложении 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,

Другие вопросы по тегам