我有以下查询和参数。我不想执行query(jdbcTemplate.queryForObject)
,而是将此带有参数的查询作为字符串传递给另一个方法。如何将这些参数分配给已准备好的语句并将查询另存为字符串?
final String QUERY = "select * "
+ "from gfc.LSI_ELGBLTY "
+ "where INSURANCE_ID = ? and "
+ "SYS_CD = ? and "
+ "ACCT_TYPE in (?)";
Object[] params = new Object[] {
request.getInsuranceId(),
request.getSystemId(),
AcctNameBuilder.toString()
};
答案 0 :(得分:0)
您不想这样做,因为在大多数情况下,将准备好的语句中的?
替换为实际值将迫使数据库重新处理和重新计划SQL查询。如果您已经有准备好的语句,请使用它,这真的很浪费。
不过,您可以定义一个共享的PreparedStatementCreator
对象并将其传递给JdbcTemplate#query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)
。
答案 1 :(得分:-1)
看看String.format。
String.format("Hello %s, %d", "world", 50);
将返回“ Hello world 50”。
格式说明符:
%s-插入一个字符串
%d-插入一个有符号整数(十进制)
%f-插入一个实数作为标准符号
另一个例子:
String.format("The {0} is repeated again: {0}", "word");
返回:“再次重复单词:单词”