我在下面使用此代码,并且运行良好。在这种情况下,我只在其中一个子句中使用该子句:
@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 语句,但没有找到正确的语法来实现这一目标。
答案 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},
...
它通常会根据您的输入数组填充?
。
但是,我将看看NamedParameterJdbcTemplate
(see the example in the docs)。这样比较干净,因为您可以使用?
参数作为名称(即:field1
)来编写查询。