我有以下查询和参数。我不想执行query(jdbcTemplate.queryForObject)
,而是将params作为字符串传递给另一个方法。如何将此参数分配给预准备语句并将查询保存为字符串?
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()
};
您不希望这样做,因为在大多数情况下,使用实际值替换预准备语句中的?
将强制数据库重新处理并重新规划SQL查询。这真的很浪费,如果你已经有一个准备好的声明,那么使用它。
但是,您可以定义共享的PreparedStatementCreator
对象并将其传递给JdbcTemplate#query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)
。
看看String.format。
String.format("Hello %s, %d", "world", 50);
将返回“Hello world 50”。
格式说明符:
%s - 插入一个字符串
%d - 插入有符号整数(十进制)
%f - 以标准符号插入实数
另一个例子:
String.format("The {0} is repeated again: {0}", "word");
回复:“这个词再次重复:字”