在where子句JdbcTemplate中使用多个参数

时间:2018-08-21 15:23:33

标签: spring jdbc 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")
    ));
}

在这种情况下,搜索一些文档和示例,我发现我只需要编写 “ where field1 =?”,新的Object [] {x},,当我在where子句中有一个参数,但现在我想拥有多个(例如x和y值)时,我的意思是,使用 AND 语句,但没有找到正确的语法来实现这一目标。

1 个答案:

答案 0 :(得分:2)

您应该能够:

    ...
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},
    ...

它通常会根据您的输入数组填充?

但是,我将看看NamedParameterJdbcTemplatesee the example in the docs)。这样比较干净,因为您可以使用?参数作为名称(即:field1)来编写查询。