Uni-Page Sayfalama Çerçevesi
Uni-Page, Java tabanlı bir genel sayfalama çerçevesidir ve farklı veri kaynakları için birleşik bir sayfa sorgulama arayüzü sunar. Çerçeve, modüler mimariyi benimser ve şu anda JDBC, Mybatis, MongoDB, Elasticsearch gibi çeşitli veri kaynaklarıyla entegredir; ayrıca esnek bir genişletme mekanizması sağlar.
Temel Tasarım
Çerçevenin temel tasarımı dört ana bileşenin etrafında şekillenmiştir:
- Sayfalama İfadesi (PaginationStatement)
- Herhangi bir dilde sayfalama sorgusu tanımını destekler
- Birleşik sayfalama parametreleri arayüzü sağlar
- Özelleştirilmiş sayfalama mantığına izin verir
- Sayfalama Yürütücüsü (PaginationStatementExecutor)
- Sayfalama sorgularını yürütmekten sorumludur
- Sayfalama bilgisi sorgulama fonksiyonu sağlar
- Genişletilebilir yürütücü mekanizması
- Sayfalama Sonuç Kümesi (PaginationResultSet)
- Birleşik sonuç kümesi arayüzü
- Sütun adı ve indeks ile veri erişimini destekler
- Tip dönüştürme fonksiyonu sağlar
- JDBC ResultSet’e benzer tasarım
- Sonuç Kümesi İşleyicisi (PaginationResultSetHandler)
- Özelleştirilmiş sonuç kümesi dönüşümünü destekler
- Nesne eşleme fonksiyonu sağlar
Tasarım Hedefleri
- Birlik
- Birleşik sayfalama sorgu arayüzü sağlar
- Farklı veri kaynaklarının uygulama farklarını gizler
- Sayfalama sorgusu kullanımını basitleştirir
- Esneklik
- Özelleştirilmiş sayfalama ifadelerini destekler
- Yürütücünün genişletilmesine izin verir
- Zengin sonuç kümesi işleme yöntemleri sağlar
- Genişletilebilirlik
- Modüler tasarım
- Yeni veri kaynaklarının hızlı entegrasyonunu destekler
- Genişletme noktası mekanizması sağlar
- Kullanım Kolaylığı
- Basit ve anlaşılır API
- Gelişmiş tip dönüşümü
- Zengin yardımcı sınıf desteği
Uygun Kullanım Senaryoları
- Birden fazla veri kaynağının sayfalandırılmış sorgularının merkezi olarak yönetilmesi gereken projeler
- Birden çok veri kaynağının sayfalandırılmasını destekleyen kurumsal uygulamalar
Temel Modüller
uni-page
Temel sayfalama kütüphanesi, temel sayfalama arayüzleri ve soyut uygulamalar sunar.uni-page-jdbc
JDBC veri kaynağı destek modülü, JDBC tabanlı sayfalama uygulamaları sağlar.uni-page-jdbc-mybatis
MyBatis entegrasyon modülü, MyBatis çerçevesi ile entegrasyon desteği sağlar.uni-page-mongodb
MongoDB veri kaynağı destek modülü, MongoDB tabanlı sayfalama uygulamaları sağlar.uni-page-elasticsearch
Elasticsearch veri kaynağı destek modülü, ES tabanlı sayfalama uygulamaları sağlar.spring-boot-starter-web-uni-page
Spring MVC ortamında sayfalama destek modülü, Spring MVC ile entegrasyon desteği sunar; tıpkı sıradan bir kontrolör yazmak kadar kolay.- Sayfalama parametreleri otomatik olarak bağlanır
- Sayfa sonuçları otomatik olarak dönüştürülür
web-uni-page-test
Spring Boot Web ortamında sayfalama test modülü, sayfalama işlevinin entegrasyon testini sağlar.Hızlı Başlangıç, uni-page-jdbc örneği ile
Maven Bağımlılığı
com.github.ethancarter
uni-page-jdbc
1.9
Basit Örnek
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
}
}
Teşekkürler
Bu çerçeveyi geliştirirken, açık kaynak topluluğundan büyük ölçüde etkilendim ve ilham aldım. Teknik deneyimlerini özveriyle paylaşan tüm uzmanlara teşekkür ederim; sizin bilginiz ve katkılarınız sayesinde bu çerçeve ortaya çıkabildi. Özellikle, harika açık kaynak projelerinin sunduğu tasarım ilhamı ve uygulama fikirleri için minnettarım; bu değerli deneyimler sayesinde devlerin omuzlarında ilerleyebildim.
Açık kaynak topluluğuna katkı sağlayan tüm teknik uzmanlara teşekkürler!
🌟 Projeyi Destekle
Eğer bu projenin size faydalı olduğunu düşünüyorsanız, sağ üst köşedeki ⭐Star butonuna tıklayarak bana destek olabilirsiniz!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---