内联参数
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
有时,您可能希望避免呈现绑定变量,同时仍然在 SQL 中使用自定义值。 您可以在此博客文章中查看一些示例原因。 jOOQ 将其称为“内联”绑定值。 当绑定值内联时,它们会在 SQL 中呈现实际值,而不是 JDBC 问号。 可以通过多种方式实现绑定值内联
- 全局方式:使用 设置 并将
org.jooq.conf.StatementType设置为 STATIC_STATEMENT。 这将内联从此配置呈现的 SQL 语句的所有绑定值。 - 本地按查询方式:使用
Query.getSQL(ParamType)方法。 - 本地按
QueryPart方式:使用DSL.inlined(Condition),DSL.inlined(Field),DSL.inlined(QueryPart), 或DSL.inlined(Statement)包装器方法中的任何一种。 - 本地按值方式:使用
DSL.inline()方法。
在所有情况下,您的内联绑定值都将被正确转义,以避免 SQL 语法错误和 SQL 注入。 一些例子
// Use dedicated calls to inline() in order to specify
// single bind values to be rendered as inline values
// --------------------------------------------------
create.select()
.from(AUTHOR)
.where(LAST_NAME.eq(inline("Poe")))
.fetch();
// Or render the whole query with inlined values
// --------------------------------------------------
Settings settings = new Settings()
.withStatementType(StatementType.STATIC_STATEMENT);
// Add the settings to the Configuration
DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
// Run queries that omit rendering schema names
create.select()
.from(AUTHOR)
.where(LAST_NAME.eq("Poe"))
.fetch();
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!