首页 > 解决方案 > 使用 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()
};

标签: javaspring-bootjdbctemplate

解决方案


您不想这样做,因为?在大多数情况下用实际值替换准备好的语句将迫使数据库重新处理和重新计划 SQL 查询。这真的很浪费,如果你已经有一个准备好的语句,那么就使用它。

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


推荐阅读