Cadre de pagination Uni-Page
Uni-Page est un cadre de pagination universel basé sur Java, qui offre une interface unifiée de requête paginée pour différentes sources de données grâce à une conception abstraite. Le cadre adopte une architecture modulaire et intègre actuellement plusieurs sources de données telles que JDBC, Mybatis, MongoDB, Elasticsearch, tout en fournissant un mécanisme d’extension flexible.
Conception centrale
La conception centrale du cadre s’articule autour de quatre composants clés :
- Instruction de pagination (PaginationStatement)
- Prise en charge de la définition de requêtes paginées dans n'importe quel langage
- Fournit une interface unifiée pour les paramètres de pagination
- Permet la personnalisation de la logique de pagination
- Exécuteur de pagination (PaginationStatementExecutor)
- Responsable de l'exécution des requêtes de pagination
- Fournit une fonctionnalité de consultation des informations de pagination
- Mécanisme d'exécuteur extensible
- Ensemble de résultats paginés (PaginationResultSet)
- Interface de résultats unifiée
- Prise en charge de l'accès aux données par nom de colonne et par index
- Offre une fonctionnalité de conversion de type
- Conception similaire à JDBC ResultSet
- Gestionnaire de résultats paginés (PaginationResultSetHandler)
- Prise en charge de la conversion personnalisée des résultats
- Fournit une fonctionnalité de mappage d'objets
Objectifs de conception
- Uniformité
- Fournir une interface de requête paginée unifiée
- Masquer les différences d'implémentation entre sources de données
- Simplifier l'utilisation des requêtes paginées
- Flexibilité
- Prise en charge des instructions de pagination personnalisées
- Permettre l'extension de l'exécuteur
- Fournir des méthodes variées pour le traitement des résultats
- Extensibilité
- Conception modulaire
- Prise en charge d'une intégration rapide de nouvelles sources de données
- Fournit un mécanisme de points d'extension
- Facilité d'utilisation
- API simple et intuitive
- Conversion de types complète
- Prise en charge d'une riche collection de classes utilitaires
Scénarios d'application
- Projets nécessitant une gestion unifiée de la pagination sur plusieurs sources de données
- Applications d'entreprise nécessitant la pagination sur divers types de sources de données
Modules principaux
uni-page
Bibliothèque centrale de pagination, fournissant des interfaces de pagination de base et des implémentations abstraites.uni-page-jdbc
Module de prise en charge des sources de données JDBC, proposant une implémentation de la pagination basée sur JDBC.uni-page-jdbc-mybatis
Module d'intégration MyBatis, offrant un support pour l'intégration avec le framework MyBatis.uni-page-mongodb
Module de prise en charge des sources de données MongoDB, proposant une implémentation de la pagination basée sur MongoDB.uni-page-elasticsearch
Module de prise en charge des sources de données Elasticsearch, proposant une pagination basée sur ES.spring-boot-starter-web-uni-page
Module de prise en charge de la pagination dans les environnements Spring MVC, offrant une intégration transparente avec Spring MVC, aussi simple que d'écrire un contrôleur ordinaire.- Liaison automatique des paramètres de pagination
- Conversion automatique des résultats paginés
web-uni-page-test
Module de test de la pagination dans l'environnement Spring Boot Web, fournissant des tests d'intégration pour la fonctionnalité de pagination.Démarrage rapide, exemple avec uni-page-jdbc
Dépendance Maven
com.github.ethancarter
uni-page-jdbc
1.9
Exemple simple
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
}
}
Remerciements
Au cours du développement de ce cadre, j'ai été profondément influencé et inspiré par la communauté open source. Merci aux experts qui partagent généreusement leurs expériences techniques, c’est grâce à votre sagesse et vos contributions que ce cadre a pu voir le jour. Un merci tout particulier aux excellents projets open source qui ont apporté des inspirations de design et des idées de mise en œuvre, ces précieuses expériences me permettant de marcher sur les épaules des géants pour avancer.
Merci à tous les experts techniques qui contribuent à la communauté open source !
🌟 Soutenir le projet
Si ce projet vous a été utile, n’hésitez pas à cliquer sur le ⭐Star en haut à droite pour me soutenir !--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---