SpringBoot интегрирует четырехстраничный запрос MybatisPlus
SpringBoot интегрирует четырехстраничный запрос MybatisPlus

0 вставить данные

Поскольку некоторые данные были удалены ранее, чтобы отразить эффект страничного запроса, лучше всего добавить некоторые данные.

1 Добавить плагин

Создайте в проекте класс конфигурации, добавьте плагин для пейджингового запроса в MybatisPlus и введите связанные классы.

Потому что разные базы данных,Ключевые слова, используемые для нумерации страниц, также различаются.,Поэтому вам нужно указать тип базы данных:DbType.MYSQL

Аннотации необходимо добавлять к классам и методам, иначе SpringBoot не будет их сканировать.

Добавляйте аннотации к именам классов @Configuration,Добавляйте аннотации к методам @Bean

Язык кода:java
копировать
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfigureUtil {

    //Настраиваем плагин пейджинга
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

2 Выполнить запрос

2.1 Запрос метода selectPage()

При выполнении запроса вы можете вызвать selectPage() метод, который необходимо использовать Page объекты и QueryWrapper объект.

В объекте Страница вы можете указать номер текущей страницы, количество элементов на странице и другую информацию во время запроса по страницам. Если номер текущей страницы равен 0 или 1, результатом запроса будет содержимое страницы 1.

В объекте QueryWrapper вы можете указать условия запроса, которые используются так же, как и обычные запросы.

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

Язык кода:java
копировать
//Запрос страницы
@Test
public void selectUserByPage(){
    Page<User> page = new Page<>(2, 2);
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.like("remark", "учитель");
    IPage<User> iPage = userMapper.selectPage(page, wrapper);
    //Общее количество страниц
    System.out.println(iPage.getPages());
    //Общее количество элементов
    System.out.println(iPage.getTotal());
    //Количество элементов на странице
    System.out.println(iPage.getSize());
    //Набор результатов текущей страницы
    System.out.println(iPage.getRecords());
    //Номер текущей страницы
    System.out.println(iPage.getCurrent());
}

Как вы можете видеть в консоли, фактически выполняются два запроса:

Первый раз — общее количество запросов;

Во второй раз нужно использовать ключевое слово limit для пейджингового запроса.

==> Preparing: SELECT COUNT(*) AS total FROM user WHERE (remark LIKE ?)

==> Parameters: %Учитель%(строка)

<== Columns: total

<== Row: 5

<== Total: 1

==> Preparing: SELECT id,username,gendar,remark FROM user WHERE (remark LIKE ?) LIMIT ?,?

==> Parameters: %Учитель%(строка), 2(Long), 2(Long)

<== Columns: id, username, gendar, remark

<== Row: 10, Чжан Сан, женский, учитель физкультуры

<== Row: 11, Лю Нэн, мужской, учитель речи

<== Total: 2

Вывод результата:

3

5

2

User{id=10, username = 'Чжан Сан', пол = 'женский', remark='учитель физкультуры'}, User{id=11, username = 'Лю Нэн', пол = 'мужской', remark='учитель речи'}

2

2.2 Запрос метода selectMapsPage()

При запросе, selectMapsPage() метод, который еще нужно использовать Page объекты и QueryWrapper объект.

и selectPage() Разница в методе в том, что здесь Page Объект должен быть Page<Map<String , Object>>,Дженерики должны быть Map<String , Object>。QueryWrapper Разницы в использовании предметов нет.

Результатом запроса также является IPage<Map<String, Object>> объект родовых типов.

Язык кода:java
копировать
//Запрос страницы
@Test
public void selectUserByPage2(){
    Page<Map<String , Object>> mapPage = new Page<>(2 , 2 );
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.like("remark", "учитель");
    IPage<Map<String, Object>> iPage = userMapper.selectMapsPage(mapPage, wrapper);
    //Общее количество страниц
    System.out.println("Всего страниц: " + iPage.getPages());
    //Общее количество элементов
    System.out.println("Общее количество предметов: " + iPage.getTotal());
    //Количество элементов на странице
    System.out.println("Количество элементов на странице: " + iPage.getSize());
    //Набор результатов текущей страницы
    System.out.println("Набор результатов для текущей страницы: " + iPage.getRecords());
    //Номер текущей страницы
    System.out.println("Текущий номер страницы: " + iPage.getCurrent());
}

Как видно из вывода консоли, этот метод также выполняет два запроса:

==> Preparing: SELECT COUNT(*) AS total FROM user WHERE (remark LIKE ?)

==> Parameters: %Учитель%(строка)

<== Columns: total

<== Row: 5

<== Total: 1

==> Preparing: SELECT id,username,gendar,remark FROM user WHERE (remark LIKE ?) LIMIT ?,?

==> Parameters: %Учитель%(строка), 2(Long), 2(Long)

<== Columns: id, username, gendar, remark

<== Row: 10, Чжан Сан, женский, учитель физкультуры

<== Row: 11, Лю Нэн, мужской, учитель речи

<== Total: 2

Вывод результата:

Всего страниц: 3

Общее количество предметов: 5

Количество элементов на странице: 2

Набор результатов для текущей страницы: {gendar=женский, remark=учитель физкультуры, id=10, имя пользователя = Чжан Сан}, {gendar=мужской, remark=учитель речи, id=11, имя пользователя = Лю Нэн}

Текущий номер страницы: 2

В отличие от первого набора результатов запроса, поскольку получается карта, положения полей в наборе результатов не фиксированы.

Я участвую в третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 с эссе, получившими приз, и сформирую команду, которая разделит приз!

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода