在jOOQ中,在表达式中使用绑定变量很容易,例如:
MY_TABLE.COL.eq(1);
MY_TABLE.COL.in(1, 2, 3);
MY_TABLE.COL.between(1).and(10);
上述所有方法都接受T和字段
1.eq(MY_TABLE.COL);
1.in(MY_TABLE.COL1, MY_TABLE.COL2, MY_TABLE.COL3);
1.between(MY_TABLE.COL1).and(MY_TABLE.COL2);
如何将这些1或xyz转换为字段
(这是jOOQ邮件列表上的一个热门问题,等等,所以我在这里记录它)
接受T的方法只是方便的方法。在幕后,它们都将参数封装在DSL中。val(T)
java prettyprint-override">// This
MY_TABLE.COL.eq(1);
// Is just convenience for this:
MY_TABLE.COL.eq(val(1));
// Or rather, this one to be precise
MY_TABLE.COL.eq(val(1, MY_TABLE.COL.getDataType()));
因为将所有内容包装在val()
中会非常冗长和繁琐,所以jOOQ的所有API都接受字段
在极少数情况下,用户需要将其绑定值显式包装在
val()
中,包括:
当绑定值位于表达式的左侧时
所以,只要写下:
val(1).eq(MY_TABLE.COL);
val(1).in(MY_TABLE.COL1, MY_TABLE.COL2, MY_TABLE.COL3);
val(1).between(MY_TABLE.COL1).and(MY_TABLE.COL2);
请注意,还有
DSL. inline(T)
来创建“内联值”,或者“常量”、“文字”,而不是绑定值。
另见:
https://www.jooq.org/doc/latest/manual/sql-building/bind-values/indexed-parameters/
JOOQ手册规定如下: jOOQ提供的所有发布服务器都将阻塞底层的JDBC连接,但是如果您为jOOQ提供io.R2DBC.spi.connection或io.R2DBC.spi.ConnectionFactory,那么发布服务器将在R2DBC驱动程序上以非阻塞的方式执行查询。 如何使用io.r2dbc.spi.Connection或io.r2dbc.spi.ConnectionFactory提供D
你不知道如何在JOOQ(Java)中创建主键吗?我需要的只是得到正确的创建表字符串。我还没有这段代码(使用SQLDialect。MYSQL): 输出(来自字符串生成器): 我需要的是设置主键以获得正确的输出: 不使用execute()是否可能?因为我只需要它作为字符串,所以我想再次使用only getSQL()命令。。。 我发现了类似这样的东西:DSL。主密钥(“id”); 但我无法将它与rest
问题内容: 如何在SQL(T-SQL)中构造本机日期数据类型值? 我添加了一些示例,但请提供您自己的示例。我的示例假定月份和年份以整数值存储(或随时可用),但是 您的 示例可能假定日期和月份(或其他形式)以文本存储。我看不到未来。给我一个惊喜 问题答案: 为什么将输入数据作为字符串,最明显(因此不足为奇,对不起)的解决方案之一是:
问题内容: 通过下面的代码运行时,我得到一个。 我该如何解决? 问题答案: 您为月份使用了错误的日期格式,也应使用与日期中相同的定界符。 如果日期字符串的格式 对模式使用相同的定界符 如果您的日期字符串的格式 在模式中使用相同的定界符“-” 应该 从 SimpleDateFormat文档 MM —>一年中的一个月 毫米->分钟
列出索引 为何无法显示索引的值? 如何创建一个可以显示值出来的索引呢?
问题内容: 我有一张地图,其中“值”是项目列表: 我想从地图中提取项目,但仅提取1个项目列表: 我已经看到了答案,但它们不适用于我的情况。我不想要这个结果: 我想要的结果是: 如何使用JAVA 8 Streams实现此目的?谢谢。莱昂纳多。 问题答案: 感谢@Holger的回答。 在值映射中的Collection为Null的情况下避免NullPointerException的代码: