Uni-Page Фреймворк пагинации
Uni-Page — это универсальный фреймворк пагинации на основе Java, который благодаря абстрактному дизайну предоставляет единый интерфейс для постраничного запроса к различным источникам данных. Фреймворк использует модульную архитектуру и в настоящее время интегрирует такие источники данных, как JDBC, Mybatis, MongoDB, Elasticsearch, а также предлагает гибкий механизм расширения.
Основной дизайн
Основной дизайн фреймворка строится вокруг четырех ключевых компонентов:
- Постраничный оператор (PaginationStatement)
- Поддержка определения постраничных запросов на любом языке
- Предоставление единого интерфейса для параметров пагинации
- Возможность настройки логики пагинации
- Исполнитель постраничных операторов (PaginationStatementExecutor)
- Отвечает за выполнение постраничных запросов
- Предоставляет функционал запроса информации о пагинации
- Расширяемый механизм исполнителя
- Постраничный результирующий набор (PaginationResultSet)
- Единый интерфейс для работы с результатами
- Поддержка доступа к данным по имени столбца и индексу
- Предоставление функции преобразования типов
- Дизайн, аналогичный JDBC ResultSet
- Обработчик результирующего набора (PaginationResultSetHandler)
- Поддержка пользовательского преобразования результатов
- Предоставление функционала отображения объектов
Цели проектирования
- Унификация
- Предоставление единого интерфейса для постраничных запросов
- Сокрытие различий в реализациях разных источников данных
- Упрощение способа использования постраничных запросов
- Гибкость
- Поддержка пользовательских операторов пагинации
- Возможность расширения исполнителя
- Предоставление разнообразных способов обработки результирующего набора
- Масштабируемость
- Модульный дизайн
- Быстрое подключение новых источников данных
- Механизм точек расширения
- Простота использования
- Простой и понятный API
- Совершенное преобразование типов
- Широкая поддержка утилитарных классов
Сценарии применения
- Проекты, требующие единого управления постраничным запросом с нескольких источников данных
- Корпоративные приложения, поддерживающие пагинацию для различных источников данных
Основные модули
uni-page
Основная библиотека пагинации, предоставляющая базовые интерфейсы и абстрактные реализации для пагинации.uni-page-jdbc
Модуль поддержки источников данных JDBC, реализующий пагинацию на основе JDBC.uni-page-jdbc-mybatis
Модуль интеграции с MyBatis, обеспечивающий поддержку работы с фреймворком MyBatis.uni-page-mongodb
Модуль поддержки источников данных MongoDB, реализующий пагинацию на основе MongoDB.uni-page-elasticsearch
Модуль поддержки источников данных Elasticsearch, реализующий пагинацию на основе Elasticsearch.spring-boot-starter-web-uni-page
Модуль поддержки пагинации в среде Spring MVC, обеспечивающий интеграцию со Spring MVC, так же просто, как написание обычного контроллера.- Автоматическая привязка параметров пагинации
- Автоматическое преобразование результатов пагинации
web-uni-page-test
Модуль тестирования пагинации в среде Spring Boot Web, предоставляющий интеграционные тесты функционала пагинации.Быстрый старт, пример на uni-page-jdbc
Зависимость Maven
com.github.ethancarter
uni-page-jdbc
1.9
Простой пример
public class PaginationTest {
public void page() {
PaginationStatementTemplate operations = new PaginationStatementTemplate();
operations.addStatementExecutor(new Sql2oPaginationNamedParameterStatementExecutor(dataSource));
// 1. 创建分页语句
PaginationStatement statement = of(b -> b
.sql("SELECT * FROM user WHERE username LIKE :username")
.paramMap("username", "%admin%")
.pageable(0, 10)
.sort("id", Sort.Direction.DESC));
// 2. 执行查询
PageInformation information = operations.queryForInformation(statement);
Page page = operations.queryForResultSet(statement, new JdbcBeanPropertyPaginationRowMapper<>(User.class));
} // User实体类
class User {
private Long id;
private String username;
// getters and setters
}
}
Благодарности
В процессе разработки этого фреймворка я был сильно вдохновлен и поддержан сообществом с открытым исходным кодом. Благодарю тех, кто бескорыстно делился техническим опытом — именно ваша мудрость и вклад позволили появиться этому фреймворку. Особенно признателен выдающимся проектам с открытым исходным кодом за вдохновение в дизайне и реализации, эти ценные знания позволили мне двигаться вперед, стоя на плечах гигантов.
Благодарю всех технических специалистов, внесших вклад в сообщество open source!
🌟 Поддержите проект
Если этот проект оказался для вас полезным, буду благодарен за ⭐Star в правом верхнем углу!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---