java - 使用 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()
};
解决方案
您不想这样做,因为?
在大多数情况下用实际值替换准备好的语句将迫使数据库重新处理和重新计划 SQL 查询。这真的很浪费,如果你已经有一个准备好的语句,那么就使用它。
但是,您可以定义一个共享PreparedStatementCreator
对象并将其传递给JdbcTemplate#query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)
.
推荐阅读
- spring-boot - PowerMockito 没有在我的代码中运行,这是我的代码
- mysql - 在 GROUP_CONCAT 中搜索过滤数据
- android - 对齐顶部相对布局的底部以使其底部到达固定底部布局的顶部时出现问题
- python - Gitlab CI/CD 错误 机器学习 Python
- javascript - 函数未在 HTMLButtonElement.onclick Angular 4 中定义
- python-3.x - 气流:将 execution_date 作为参数传递给 DataflowPythonOperator
- flutter - 未找到 Android SDK 文件:adb - 但在哪个 adb 中可见
- python - 即使图像非常小也无法运行 Mask R-CNN python 代码
- excel - 在 VBA 中有条件地编辑 Excel 函数
- java - 在 Java 中使用 Azure Graph 需要使用什么 pom?