java - 如何从 SQL 查询(JOOQ)中获取列参数
问题描述
我有一个问题,是否可以从 JOOQ -java 中的 SQL 查询中获取参数。
我正在使用这样的东西:
for (Query query: sqlQueries){
for (Param param: query.getParams().values()) {
System.out.println("P: "+ param.getName());
}
}
SQL查询:
...
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Kotov', 'Peter', '22');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Alhambra', 'Seat', '33');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('F50', 'Ferrari', '100');
将像这样处理(输出):
P: Kotov
P: Peter
P: 22
P: Alhambra
P: Seat
P: 33
P: F50
P: Ferrari
P: 100
我还需要使用这样的列名获取输出:
P: Priezvisko
P: Meno
P: Vek
P: Kotov
P: Peter
P: 22
... rest
有可能是因为我不知道怎么做吗?如果我可以问是否可以从查询中获取 tableName ?(在我们的示例中为“filetest”)
为什么我需要这个是让这些参数创建 CSV 文件(SQL -> CSV) 从提到的 SQL 创建 CSV:
Meno,Priezvisko,Vek
"Peter","Kotov","22"
"Seat","Alhambra","33"
"Ferrari","F50","100"
解决方案
特定参数恰好“链接”到 SQL 语句中的列这一事实是您的一个相当随意的假设。一个会打破您的假设的简单示例是以下语句:
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`)
values ((select 'Kotov' from dual where 1 = 0), 'Peter', '22');
该语句现在将包含 5 个参数:
P: Kotov -- Relevant
P: 1 -- Irrelevant
P: 0 -- Irrelevant
P: Peter -- Relevant
P: 22 -- Relevant
您可能想要使用 generated FiletestRecord
,它本质上是一个Map<Field<?>, ?>
可以通过调用or or转换为INSERT
orUPDATE
语句的record.insert()
record.update()
ctx.insertInto(FILETEST).set(filetestRecord).execute();
推荐阅读
- css - 使用 Flex CSS 和 Bootstrap 进行响应式布局
- python - 如何解决:JupyterLab codefolding column occlude 我的代码的第一列
- javascript - TypeError:无法读取未定义的属性(读取“createContext”)
- php - Laravel 中的删除功能
- javascript - 如何将 forEach 循环与 every 结合起来,使其更有效率和更有条理?
- keras - 拟合 CNN 模型时警告消息的含义是什么“”`sparse_categorical_crossentropy` 收到 `from_logits=True`,但是 `output`"
- flutter - 在颤动中为圆形图像创建模糊阴影
- javascript - 使用 JavaScript 数组 from 和 fill 函数创建双精度数组有什么区别?
- python - 多个依赖的 QComboBox
- yii - 找不到页面在后端工作但在前端 Yii2 不工作