使用JdbcTemplate

时间:2018-09-17 13:15:22

标签: java spring-boot jdbctemplate

我有以下查询和参数。我不想执行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()
};

2 个答案:

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

返回:“再次重复单词:单词”