java - JOOQ 从 selectCount 检索 map

标签 java sql jooq

我正在尝试获取一张 map ,它基本上是 Map 并且具有来自 JOOQ 的 booktype 和 count 信息。 我尝试了以下和不同的组合,但不断出现错误。任何帮助将不胜感激:

    Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE)
         .groupBy(BOOKTABLE.TYPE)
         .fetchMAP(BOOKTABLE.TYPE);

最佳答案

在这种情况下你不能使用 selectCount(),因为当你真的想要一个 SELECT 类型时,它会产生一个 SELECT COUNT(*) 查询, COUNT(*) 查询。

这里有几种方法可以做到这一点,具体取决于您要从查询中获取的类型:

// Assuming this static import:
import static org.jooq.impl.DSL.*;

Map<String, Integer> map1 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchMap(BOOKTABLE.TYPE, count());

或者:

Map<String, Record2<String, Integer>> map2 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchMap(BOOKTABLE.TYPE);

或者:

Map<String, List<Integer>> map3 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchGroups(BOOKTABLE.TYPE, count());

或者:

Map<String, Result<Record2<String, Integer>>> map4 =
ctx.select(BOOKTABLE.TYPE, count())
   .from(BOOKTABLE)
   .groupBy(BOOKTABLE.TYPE)
   .fetchGroups(BOOKTABLE.TYPE);

关于java - JOOQ 从 selectCount 检索 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732569/

相关文章:

java - MULE ESB 简单 SOAP 服务创建必填字段

SQL表将一个id的多行分成多列

mysql - 如何从 SQL 查询的单个日期列获取开始/结束日期

java - 使用 jOOQ 创建自定义聚合函数

java - jOOQ - 如何使用具有多个条件的 WHERE 创建 SQL 查询

java - JOOQ在executeInsert()之后,需要知道自动生成的ID

java - 如何使用代码复制功能?

java - Android/Java 及多个 "view states"

java - 为java原型(prototype)的子语言创建上下文无关语法

mysql - 比较同一列中的两个值