使用JdbcTemplate将查询准备为String

问题描述 投票:-1回答:2

我有以下查询和参数。我不想执行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()
};
java spring-boot jdbctemplate
2个回答
0
投票

您不希望这样做,因为在大多数情况下,使用实际值替换预准备语句中的?将强制数据库重新处理并重新规划SQL查询。这真的很浪费,如果你已经有一个准备好的声明,那么使用它。

但是,您可以定义共享的PreparedStatementCreator对象并将其传递给JdbcTemplate#query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)


-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");

回复:“这个词再次重复:字”

© www.soinside.com 2019 - 2024. All rights reserved.