示例查询 (QBE)
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
查询数据库表的一种常用方法叫做 Query by Example(示例查询),这意味着提供一个结果记录的“示例”来代替正式的查询
-- example book record: ID : AUTHOR_ID : 1 TITLE : PUBLISHED_IN: 1970 LANGUAGE_ID : 1
-- Corresponding query SELECT * FROM book WHERE author_id = 1 AND published_in = 1970 AND language_id = 1
从示例记录到查询的转换非常直接
- 如果记录属性设置为一个值,那么该值将被用于相等谓词
- 如果记录属性未设置,那么该属性不会被用于任何谓词
jOOQ 有一个简单的 API 叫做 DSL.condition(Record)
,它可以将一个 org.jooq.Record
转换为一个 org.jooq.Condition
BookRecord book = new BookRecord(); book.setAuthorId(1); book.setPublishedIn(1970); book.setLanguageId(1); // Using the explicit condition() API Result<BookRecord> books1 = DSL.using(configuration) .selectFrom(BOOK) .where(condition(book)) .fetch(); // Using the convenience API on DSLContext Result<BookRecord> books2 = DSL.using(configuration).fetchByExample(book);
后一个 API 调用使用了便捷 API DSLContext.fetchByExample(TableRecord)
。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!