Uni-Page Marco de Paginación
Uni-Page es un marco de paginación universal basado en Java, que mediante un diseño abstracto, proporciona una interfaz de consulta de paginación unificada para diferentes fuentes de datos. El marco adopta una arquitectura modular, integrando actualmente JDBC, Mybatis, MongoDB, Elasticsearch y otras fuentes de datos, y ofrece un mecanismo de extensión flexible.
Diseño Central
El diseño central del marco gira en torno a cuatro componentes clave:
- Sentencia de paginación (PaginationStatement)
- Soporta la definición de sentencias de paginación en cualquier lenguaje
- Proporciona una interfaz unificada de parámetros de paginación
- Permite personalizar la lógica de paginación
- Ejecutor de sentencia de paginación (PaginationStatementExecutor)
- Responsable de ejecutar la sentencia de consulta paginada
- Proporciona funcionalidad de consulta de información de paginación
- Mecanismo de ejecutor extensible
- Conjunto de resultados de paginación (PaginationResultSet)
- Interfaz de conjunto de resultados unificada
- Soporta acceso a datos por nombre de columna e índice
- Proporciona funcionalidad de conversión de tipos
- Diseño similar al JDBC ResultSet
- Procesador de conjunto de resultados (PaginationResultSetHandler)
- Soporta conversión personalizada de conjunto de resultados
- Proporciona funcionalidad de mapeo de objetos
Objetivos de diseño
- Unificación
- Proporciona una interfaz de consulta de paginación unificada
- Oculta las diferencias de implementación entre distintas fuentes de datos
- Simplifica el uso de consultas paginadas
- Flexibilidad
- Soporta sentencias de paginación personalizadas
- Permite extender los ejecutores
- Ofrece diversas formas de procesamiento de conjuntos de resultados
- Escalabilidad
- Diseño modular
- Soporta la rápida integración de nuevas fuentes de datos
- Proporciona un mecanismo de puntos de extensión
- Facilidad de uso
- API simple e intuitiva
- Conversión de tipos completa
- Soporte de clases utilitarias enriquecido
Escenarios de uso
- Proyectos que requieren gestión unificada de consultas paginadas en múltiples fuentes de datos
- Aplicaciones empresariales que necesitan soporte de paginación para varias fuentes de datos
Módulos principales
uni-page
Biblioteca central de paginación, proporciona interfaces básicas de paginación y una implementación abstracta.uni-page-jdbc
Módulo de soporte para fuentes de datos JDBC, ofrece una implementación de paginación basada en JDBC.uni-page-jdbc-mybatis
Módulo de integración con MyBatis, proporciona soporte de integración con el framework MyBatis.uni-page-mongodb
Módulo de soporte para fuentes de datos MongoDB, ofrece una implementación de paginación basada en MongoDB.uni-page-elasticsearch
Módulo de soporte para fuentes de datos Elasticsearch, ofrece una implementación de paginación basada en ES.spring-boot-starter-web-uni-page
Módulo de soporte de paginación para entornos Spring MVC, proporciona integración con Spring MVC, tan simple como escribir un controlador común.- Enlace automático de parámetros de paginación
- Conversión automática de resultados de paginación
web-uni-page-test
Módulo de pruebas de paginación en entorno Spring Boot Web, proporciona pruebas de integración de la funcionalidad de paginación.Inicio rápido, usando uni-page-jdbc como ejemplo
Dependencia Maven
com.github.ethancarter
uni-page-jdbc
1.9
Ejemplo sencillo
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
}
}
Agradecimientos
Durante el desarrollo de este marco, he sido profundamente influenciado e inspirado por la comunidad de código abierto. Gracias a esos expertos que comparten desinteresadamente sus experiencias técnicas, es vuestra sabiduría y contribución lo que ha permitido el nacimiento de este marco. Un agradecimiento especial a los excelentes proyectos de código abierto que han aportado inspiración en el diseño y enfoques de implementación; estas valiosas experiencias me han permitido avanzar apoyándome en los hombros de gigantes.
¡Gracias a todos los expertos que contribuyen a la comunidad de código abierto!
🌟 Apoya el proyecto
Si crees que este proyecto te ha sido útil, ¡te invito a hacer clic en la ⭐Star en la esquina superior derecha para apoyarme!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---