You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jOOQ编写MySQL查询时如何实现question.*选取表全字段

jOOQ实现查询指定表所有字段(对应SQL表.*语法)的方案

针对你要转换的MySQL左连接查询:

select question.*, 
       question_option.id 
from question 
left join question_option on question_option.question_id = question.id;

在jOOQ中无需逐一枚举question表的全部字段,有两种等价写法可以直接实现question.*的效果:

  • 写法1:直接将jOOQ代码生成器生成的question表对象作为select参数传入,这是日常开发最常用的写法
// 静态导入生成的表常量
import static com.yourproject.generated.Tables.QUESTION;
import static com.yourproject.generated.Tables.QUESTION_OPTION;

// 构建查询
var fetchResult = dsl.select(QUESTION, QUESTION_OPTION.ID)
        .from(QUESTION)
        .leftJoin(QUESTION_OPTION)
        .on(QUESTION_OPTION.QUESTION_ID.eq(QUESTION.ID))
        .fetch();

jOOQ渲染SQL时会自动为传入的表对象生成question.*片段,查询结果中可以直接通过表字段引用取值,也支持直接将question表对应的字段映射为自定义实体类。

  • 写法2:调用表对象的asterisk()方法,语义上和SQL的.*完全对应
var fetchResult = dsl.select(QUESTION.asterisk(), QUESTION_OPTION.ID)
        .from(QUESTION)
        .leftJoin(QUESTION_OPTION)
        .on(QUESTION_OPTION.QUESTION_ID.eq(QUESTION.ID))
        .fetch();

注意:不要使用无表前缀的dsl.asterisk()方法,该方法会生成全局的*,查出关联的所有表的全部字段,不符合只查询question表所有字段的需求。

内容的提问来源于stack exchange,提问作者Sai Uttej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.21 16:16:02