gpt4 book ai didi

java - JOOQ 创建表并插入值 DSLContext

转载 作者:行者123 更新时间:2023-11-30 08:39:32 47 4
gpt4 key购买 nike

我正在尝试生成 Database使用 JOOQ

我确实用这段代码创建了一个表:

CreateTableAsStep<Record> table = create.createTable("TestTable");
CreateTableColumnStep step = table.column("testColumn", SQLDataType.Integer);
step.execute();

这很好用,但是当涉及到插入数据时,我遇到了问题该文档包括以下示例:

create.insertInto(AUTHOR)
.set(AUTHOR.ID, 100)
.set(AUTHOR.FIRST_NAME, "Hermann")
.set(AUTHOR.LAST_NAME, "Hesse")
.newRecord()
.set(AUTHOR.ID, 101)
.set(AUTHOR.FIRST_NAME, "Alfred")
.set(AUTHOR.LAST_NAME, "Döblin")
.execute();

在这里AUTHOR不是简单的String它需要一个 org.jooq.Table<R extends Record>

我想可能会有一个 return type创建表时,但我没有找到它。谷歌没有帮助 Table不是搜索的最佳词 ;-)

问题:我怎样才能得到一个 Table 的实例? - 我的名字是String

最佳答案

您始终可以通过 DSL.table(String) 创建 Table 引用或 DSL.table(Name) .例如:

// Assuming this:
import static org.jooq.impl.DSL.*;

create.insertInto(table(name("TestTable")))
.set(field(name("testColumn")), 1)
.execute();

另请注意我对 DSL.field(Name) 的用法.

普通SQLName引用资料

值得一读的是在运行时使用纯 SQL 字符串(如 DSL.table(String) )或名称引用(如 DSL.table(Name) )创建动态表/字段对象之间的区别。本质上:

  • 普通 SQL 字符串不区分大小写并且易受 SQL 注入(inject)攻击
  • 名称引用默认区分大小写

在您的情况下,由于您可能创建了区分大小写的表/列名称,因此您应该更喜欢后者。可以在此处找到更多信息:

关于java - JOOQ 创建表并插入值 DSLContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095202/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com