Uni-Pagination cadre de pagination
Uni Pagination est un cadre de pagination universel basé sur Java, qui, grâce à une conception abstraite, offre une interface de requête de pagination unifiée pour différentes sources de données. Le cadre adopte une architecture modulaire, intégrant actuellement plusieurs sources de données telles que JDBC, Mybatis, MongoDB, Elasticsearch, et propose un mécanisme d’extension flexible.
Conception principale
La conception principale du cadre s’articule autour de quatre composants clés :
- Instruction de pagination (PaginationStatement)
- Supporte la définition d'instructions de requête de pagination pour n'importe quel langage
- Fournit une interface unifiée pour les paramètres de pagination
- Permet une logique de pagination personnalisée
- Exécuteur d'instruction de pagination (PaginationStatementExecutor)
- Responsable de l'exécution des instructions de requête de pagination
- Fournit une fonction de consultation des informations de pagination
- Mécanisme d'exécuteur extensible
- Ensemble de résultats de pagination (PaginationResultSet)
- Interface unifiée pour l'ensemble des résultats
- Supporte l'accès aux données par nom de colonne et index
- Offre une fonction de conversion de type
- Conception similaire à JDBC ResultSet
- Gestionnaire d'ensemble de résultats (PaginationResultSetHandler)
- Supporte la conversion personnalisée de l'ensemble des résultats
- Fournit une fonction de mapping d'objet
Objectifs de conception
- Unification
- Fournir une interface unifiée pour les requêtes de pagination
- Masquer les différences d'implémentation des différentes sources de données
- Simplifier l'utilisation des requêtes de pagination
- Flexibilité
- Supporter les instructions de pagination personnalisées
- Permettre l'extension des exécuteurs
- Fournir des méthodes riches de traitement des ensembles de résultats
- Extensibilité
- Conception modulaire
- Supporter l'intégration rapide de nouvelles sources de données
- Fournir un mécanisme de points d'extension
- Facilité d'utilisation
- API simple et intuitive
- Conversion de type complète
- Support riche des classes utilitaires
Scénarios d'application
- Projets nécessitant une gestion unifiée des requêtes paginées sur plusieurs sources de données
- Applications d'entreprise nécessitant la prise en charge de la pagination sur plusieurs sources de données
Modules principaux
uni-pagination
Bibliothèque de pagination principale, fournissant des interfaces de pagination de base et des implémentations abstraites.uni-pagination-jdbc
Module de support des sources de données JDBC, fournissant une implémentation de pagination basée sur JDBC.uni-pagination-jdbc-mybatis
Module d'intégration MyBatis, offrant un support d'intégration avec le framework MyBatis.uni-pagination-mongodb
Composant d'intégration MongoDB, destiné à supporter les requêtes paginées sur MongoDB.spring-boot-starter-web-uni-pagination
Module de support de pagination dans l'environnement Spring MVC, offrant un support d'intégration avec Spring MVC, aussi simple que d'écrire un contrôleur classique.- Liaison automatique des paramètres de pagination
- Conversion automatique des résultats de pagination
web-uni-pagination-test
Module de test de pagination dans l'environnement Spring Boot Web, fournissant des tests d'intégration des fonctionnalités de pagination.Démarrage rapide, avec uni-pagination-jdbc en exemple
Dépendance Maven
io.github.taoganio
uni-pagination-jdbc
1.0.0
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
Lors du développement de ce cadre, j'ai été profondément influencé et inspiré par la communauté open source. Merci à tous les 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 remerciement particulier aux excellents projets open source qui ont apporté des inspirations de conception et des idées de mise en œuvre, ces expériences précieuses m’ont permis de continuer à avancer en m’appuyant sur les épaules des géants.
Merci à tous les experts qui contribuent à la communauté open source !
🌟 Soutenir le projet
Si vous trouvez ce projet utile, n’hésitez pas à cliquer sur l’étoile ⭐ en haut à droite pour me soutenir !--- Tranlated By Open Ai Tx | Last indexed: 2025-12-17 ---