Рубрики
Без рубрики

Запрос Количества В jOOQ

Изучите различные способы подсчета записей с помощью jOOQ.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы продемонстрируем, как выполнить запрос count с помощью объектно-ориентированного запроса jOOQ , также известного как just jOOQ . jOOQ-это популярная библиотека баз данных Java, которая помогает вам писать типобезопасные SQL-запросы на Java.

2. дЖУК

jOOQ-это альтернатива ORM. В отличие от большинства других форм, jOOQ ориентирован на реляционную модель, а не на модель домена|/. Например, Hibernate помогает нам писать код Java, который затем автоматически переводится в SQL. Однако jOOQ позволяет нам создавать реляционные объекты в базе данных с помощью SQL, а затем генерирует код Java для сопоставления с этими объектами.

3. Зависимости Maven

В этом уроке нам понадобится модуль jooq :


    org.jooq
    jooq
    3.14.8

4. Запрос количества

Допустим, у нас есть таблица author в нашей базе данных. Таблица author содержит id, first_name и last_name.

Выполнение запроса count может быть выполнено несколькими различными способами.

4.1. Количество выборки

DSL.fetch Count имеет несколько способов подсчета количества записей в таблице.

Во-первых, давайте рассмотрим метод fetchCount (таблица таблица) для подсчета количества записей:

int count = dsl.fetchCount(DSL.selectFrom(AUTHOR));
Assert.assertEquals(3, count);

Затем давайте попробуем метод fetchCount (таблица таблица) с помощью метода selectFrom и предложения where для подсчета количества записей:

int count = dsl.fetchCount(DSL.selectFrom(AUTHOR)
  .where(AUTHOR.FIRST_NAME.equalIgnoreCase("Bryan")));
Assert.assertEquals(1, count);

Теперь давайте попробуем //fetchCount (Таблица таблица, Условие условие) метод подсчета количества записей:

int count = dsl.fetchCount(AUTHOR, AUTHOR.FIRST_NAME.equalIgnoreCase("Bryan"));
Assert.assertEquals(1, count);

Мы также можем использовать fetchCount (Таблица таблица, коллекция расширяет условие> условия) метод для нескольких условий: расширяет условие> условия)

Condition firstCond = AUTHOR.FIRST_NAME.equalIgnoreCase("Bryan");
Condition secondCond = AUTHOR.ID.notEqual(1);
List conditions = new ArrayList<>();
conditions.add(firstCond);
conditions.add(secondCond);
int count = dsl.fetchCount(AUTHOR, conditions);
Assert.assertEquals(1, count);

В этом случае мы добавляем условия фильтра в список и предоставляем его методу fetch Count .

Метод fetch Count также позволяет использовать varargs для нескольких условий:

Condition firstCond = AUTHOR.FIRST_NAME.equalIgnoreCase("Bryan");
Condition secondCond = AUTHOR.ID.notEqual(1);
int count = dsl.fetchCount(AUTHOR, firstCond, secondCond);
Assert.assertEquals(1, count);

4.2. подсчет

Давайте попробуем метод count , чтобы получить количество доступных записей:

int count = dsl.select(DSL.count()).from(AUTHOR)
  .fetchOne(0, int.class);
Assert.assertEquals(3, count);

4.3. выберите Количество

Теперь давайте попробуем использовать метод selectCount , чтобы получить количество доступных записей:

int count = dsl.selectCount().from(AUTHOR)
  .where(AUTHOR.FIRST_NAME.equalIgnoreCase("Bryan"))
  .fetchOne(0, int.class);
Assert.assertEquals(1, count);

4.4. Простой выбор

Мы также можем использовать простой метод select , чтобы получить количество доступных записей:

int count = dsl.select().from(AUTHOR).execute();
Assert.assertEquals(3, count);

4.5. Подсчет С группой По

Давайте попробуем использовать методы select и count , чтобы найти количество записей, сгруппированных по полю:

Result> result = dsl.select(AUTHOR.FIRST_NAME, DSL.count())
  .from(AUTHOR).groupBy(AUTHOR.FIRST_NAME).fetch();
Assert.assertEquals(3, result.size());
Assert.assertEquals(result.get(0).get(0), "Bert");
Assert.assertEquals(result.get(0).get(1), 1);

5. Заключение

В этой статье мы рассмотрели, как выполнить запрос count в jOOQ.

Мы рассмотрели использование методов select Count, count, fetch Count, select, и count с group By для подсчета количества записей.

Как обычно, все примеры кода, используемые в этом руководстве, доступны на GitHub.