sql - 我可以在 jOOQ SQL 执行器中使用命名参数吗?
问题描述
我正在使用 jOOQ 执行任意 SQL 查询。我这样做如下:
String result = create.fetchSingle("SELECT ...").getValue(0, String.class);
此查询始终返回一行和一列,因此使用fetchSingle
and getValue(0, T)
。我找不到将两者结合起来的方法。
我现在想将命名参数传递给该查询。该参数在多个地方使用,所以我认为在这里使用命名参数是一个很好的用法。此参数的类型是字符串数组。
我怎样才能做到这一点?如何在查询中引用该参数?在 JDBC 中,我会写:name_of_parameter::text[]
.
解决方案
您正在寻找的 API 是DSLContext.fetchSingle(String, Object...)
,它接受带有参数占位符的 SQL 字符串以及实际的绑定。
但是,它不支持命名参数,只支持索引参数,因此您必须多次重复该值,例如
create.fetchSingle("SELECT 'a' WHERE ?::text[] = ?::text[]", value, value)
.getValue(0, String.class);
推荐阅读
- powerquery - PowerPivot:连接具有多个数据的表
- javascript - 访问在 Ajax 调用中加载的数组元素
- ios - .symbol 文件(在符号文件夹中)和 ipa 中的 .dsym 文件有什么区别?
- vba - 从新报告中提取数据并将特定数据编译到一张 Excel 表中
- java - 我们如何解决 JAVA 命令行错误(FatalError: Program Stack empty)?
- python - TypeError:不允许使用 `tf.Tensor` 作为 Python `bool`。在 keras 中编写自定义度量函数时
- python - 将 scipy.sparse 矩阵转换为等效的 MATLAB 稀疏矩阵
- c# - C# WPF 中的 RichTextBox 关键字着色
- python - 为什么单击 div 在 phantomJS 中不起作用?
- javascript - 使用 Rollup 和 scss 动态注入每个组件的样式标签