Uni-Page Framework de Paginação
Uni-Page é um framework de paginação universal baseado em Java, que fornece uma interface unificada para consultas paginadas em diferentes fontes de dados por meio de um design abstrato. O framework adota uma arquitetura modular, atualmente integrando várias fontes de dados como JDBC, Mybatis, MongoDB, Elasticsearch, e oferece um mecanismo flexível de extensão.
Design Central
O design central do framework é estruturado em torno de quatro componentes-chave:
- Instrução de Paginação (PaginationStatement)
- Suporta definição de instruções de consulta paginada em qualquer linguagem
- Fornece interface unificada de parâmetros de paginação
- Permite lógica de paginação personalizada
- Executor de Instrução de Paginação (PaginationStatementExecutor)
- Responsável por executar instruções de consulta paginada
- Fornece funcionalidade de consulta de informações de paginação
- Mecanismo de executor extensível
- Conjunto de Resultados de Paginação (PaginationResultSet)
- Interface unificada de conjunto de resultados
- Suporta acesso aos dados por nome de coluna e índice
- Oferece funcionalidade de conversão de tipos
- Design semelhante ao JDBC ResultSet
- Manipulador de Conjunto de Resultados (PaginationResultSetHandler)
- Suporta conversão personalizada de conjunto de resultados
- Fornece funcionalidade de mapeamento de objetos
Objetivos de Design
- Unificação
- Oferece interface unificada para consultas paginadas
- Abstrai diferenças de implementação entre diferentes fontes de dados
- Simplifica o uso das consultas paginadas
- Flexibilidade
- Suporta instruções de paginação personalizadas
- Permite extensão de executores
- Disponibiliza formas variadas de manipulação de conjuntos de resultados
- Escalabilidade
- Design modular
- Suporta integração rápida de novas fontes de dados
- Oferece mecanismo de pontos de extensão
- Facilidade de uso
- API simples e intuitiva
- Conversão de tipos aprimorada
- Suporte abrangente de classes utilitárias
Cenários de Aplicação
- Projetos que precisam gerenciar consultas paginadas de múltiplas fontes de dados de forma unificada
- Aplicações corporativas que requerem suporte à paginação de diversos tipos de fontes de dados
Módulos Principais
uni-page
Biblioteca central de paginação, fornece interfaces básicas de paginação e implementações abstratas.uni-page-jdbc
Módulo de suporte a fonte de dados JDBC, fornece implementação de paginação baseada em JDBC.uni-page-jdbc-mybatis
Módulo de integração com MyBatis, oferece suporte à integração com o framework MyBatis.uni-page-mongodb
Módulo de suporte a fonte de dados MongoDB, fornece implementação de paginação baseada em MongoDB.uni-page-elasticsearch
Módulo de suporte a fonte de dados Elasticsearch, oferece implementação de paginação baseada em ES.spring-boot-starter-web-uni-page
Módulo de suporte à paginação em ambiente Spring MVC, fornece integração com Spring MVC, tornando tão simples quanto escrever um controlador comum.- Vinculação automática de parâmetros de paginação
- Conversão automática de resultados de paginação
web-uni-page-test
Módulo de testes de paginação em ambiente Spring Boot Web, fornece testes integrados de funcionalidade de paginação.Início Rápido, usando uni-page-jdbc como exemplo
Dependência Maven
com.github.ethancarter
uni-page-jdbc
1.9
Exemplo simples
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
}
}
Agradecimentos
Durante o desenvolvimento deste framework, fui profundamente influenciado e inspirado pela comunidade de código aberto. Agradeço aos especialistas que compartilharam generosamente suas experiências técnicas; é a sabedoria e a contribuição de vocês que permitiram o nascimento deste framework. Agradeço especialmente aos excelentes projetos open source pelas inspirações de design e ideias de implementação, pois essas experiências valiosas me permitiram continuar avançando sobre os ombros de gigantes.
Obrigado a todos os especialistas técnicos que contribuíram para a comunidade open source!
🌟 Apoie o projeto
Se você acha que este projeto foi útil para você, fique à vontade para clicar na ⭐Star no canto superior direito para me apoiar!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---