gpt4 book ai didi

java - 不使用命名参数时重用 sql 参数

转载 作者:行者123 更新时间:2023-11-30 02:00:37 25 4
gpt4 key购买 nike

我有一个使用 JdbcTemplate 调用的查询,但只有一个参数被发送,我需要在两个 where 条件中使用该一个参数。

查询

String sql = "select * from employee where salary > ? and netpay > ?";

电话

这里的参数只有一个。 IE。如果 id 是 TEST123 则查询需要是

从 id = TEST123 且 name = TEST123 的员工中选择 *,即使传递了一个参数。

getJdbcTemplate().query(sql, new Object[]{"TEST123"}, CustomResultSetExtractor());

有什么方法可以从查询端执行此操作,而不是传递两个参数?

注意

我无权更改调用查询的方式,因此无法添加命名参数,或仅传递附加参数。

最佳答案

使用NamedParameterJdbcTemplate ,一个 JdbcTemplate 包装器:

Template class with a basic set of JDBC operations, allowing the use of named parameters rather than traditional '?' placeholders.

This class delegates to a wrapped JdbcTemplate once the substitution from named parameters to JDBC style '?' placeholders is done at execution time.

您的 SQL 将带有 1 个参数:

select * from employee where id = (:id) and name = (:id)

代码将是:

MapSqlParameterSource args = new MapSqlParameterSource();
args.addValue("id", TEST123);
return new NamedParameterJdbcTemplate(getJdbcTemplate()).query(sql , args, youRowMapper);

如果您无法更改它,您可以将查询更改为:

 select * from employee where id = ? and id = name

关于java - 不使用命名参数时重用 sql 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52971113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com