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); Listconditions = 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.