首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用JOOQ模拟聚合函数的结果?

如何用JOOQ模拟聚合函数的结果?
EN

Stack Overflow用户
提问于 2018-05-10 09:42:55
回答 1查看 757关注 0票数 2

我使用JOOQ在服务类中调用count聚合函数。

代码语言:javascript
运行
复制
SelectQuery<Record> query = this.dsl.selectQuery();
query.addSelect(DSL.count());
query.addFrom(SOME_TABLE);
final Integer total = query.fetchOne(0, Integer.class);

我需要模拟单元测试中的计数结果。做这件事的最好方法是什么?

jooq文件之后,我必须创建包含相关字段计数的结果记录。就像这样:

代码语言:javascript
运行
复制
Result<Record1<Integer>> result = create.newResult(...);

但是,在为聚合函数创建模拟记录时,我必须使用什么作为create.newResult()方法参数呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 08:57:44

您的查询应该返回一行和一列,因此创建结果:

代码语言:javascript
运行
复制
Field<Integer> c = DSL.count();
Result<Record1<Integer>> result = create.newResult(c);
result.add(create.newRecord(c).values(42));

您所链接的文档显示了一个非常类似的示例:

代码语言:javascript
运行
复制
...
// You decide, whether any given statement returns results, and how many
else if (sql.toUpperCase().startsWith("SELECT")) {

    // Always return one record
    Result<Record2<Integer, String>> result = create.newResult(AUTHOR.ID,AUTHOR.LAST_NAME);
    result.add(create
        .newRecord(AUTHOR.ID, AUTHOR.LAST_NAME)
        .values(1, "Orwell"));
    mock[0] = new MockResult(1, result);
}
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50269936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档