Uni-Page Khung Phân Trang
Uni-Page là một khung phân trang tổng quát dựa trên Java, thông qua thiết kế trừu tượng, cung cấp giao diện truy vấn phân trang thống nhất cho các nguồn dữ liệu khác nhau. Khung này sử dụng kiến trúc dạng module, hiện tại đã tích hợp nhiều nguồn dữ liệu như JDBC, Mybatis, MongoDB, Elasticsearch, đồng thời cung cấp cơ chế mở rộng linh hoạt.
Thiết kế cốt lõi
Thiết kế cốt lõi của khung xoay quanh bốn thành phần chính:
- Câu lệnh phân trang (PaginationStatement)
- Hỗ trợ định nghĩa câu lệnh truy vấn phân trang cho bất kỳ ngôn ngữ nào
- Cung cấp giao diện tham số phân trang thống nhất
- Cho phép tùy chỉnh logic phân trang
- Trình thực thi phân trang (PaginationStatementExecutor)
- Chịu trách nhiệm thực thi câu lệnh truy vấn phân trang
- Cung cấp chức năng truy vấn thông tin phân trang
- Cơ chế thực thi có thể mở rộng
- Tập kết quả phân trang (PaginationResultSet)
- Giao diện tập kết quả thống nhất
- Hỗ trợ truy cập dữ liệu theo tên cột và chỉ số
- Cung cấp chức năng chuyển đổi kiểu dữ liệu
- Thiết kế tương tự JDBC ResultSet
- Trình xử lý tập kết quả (PaginationResultSetHandler)
- Hỗ trợ chuyển đổi tập kết quả tùy chỉnh
- Cung cấp chức năng ánh xạ đối tượng
Mục tiêu thiết kế
- Tính thống nhất
- Cung cấp giao diện truy vấn phân trang thống nhất
- Ẩn sự khác biệt trong triển khai của các nguồn dữ liệu
- Đơn giản hóa cách sử dụng truy vấn phân trang
- Tính linh hoạt
- Hỗ trợ câu lệnh phân trang tùy chỉnh
- Cho phép mở rộng trình thực thi
- Cung cấp nhiều cách xử lý tập kết quả
- Tính mở rộng
- Thiết kế dạng mô-đun
- Hỗ trợ kết nối nhanh nguồn dữ liệu mới
- Cung cấp cơ chế điểm mở rộng
- Tính dễ sử dụng
- API đơn giản, trực quan
- Chuyển đổi kiểu dữ liệu hoàn thiện
- Hỗ trợ đa dạng các lớp công cụ tiện ích
Các trường hợp áp dụng
- Dự án cần quản lý tập trung nhiều nguồn dữ liệu phân trang
- Ứng dụng cấp doanh nghiệp cần hỗ trợ phân trang trên nhiều nguồn dữ liệu
Các mô-đun cốt lõi
uni-page
Thư viện phân trang cốt lõi, cung cấp các giao diện phân trang cơ bản và các triển khai trừu tượng.uni-page-jdbc
Mô-đun hỗ trợ nguồn dữ liệu JDBC, cung cấp triển khai phân trang dựa trên JDBC.uni-page-jdbc-mybatis
Mô-đun tích hợp MyBatis, cung cấp hỗ trợ tích hợp với framework MyBatis.uni-page-mongodb
Mô-đun hỗ trợ nguồn dữ liệu MongoDB, cung cấp triển khai phân trang dựa trên MongoDB.uni-page-elasticsearch
Mô-đun hỗ trợ nguồn dữ liệu Elasticsearch, cung cấp triển khai phân trang dựa trên ES.spring-boot-starter-web-uni-page
Mô-đun hỗ trợ phân trang trong môi trường Spring MVC, cung cấp khả năng tích hợp với Spring MVC, đơn giản như viết một controller thông thường.- Tự động liên kết tham số phân trang
- Tự động chuyển đổi kết quả phân trang
web-uni-page-test
Mô-đun kiểm thử phân trang trong môi trường Spring Boot Web, cung cấp kiểm thử tích hợp chức năng phân trang.Bắt đầu nhanh, lấy uni-page-jdbc làm ví dụ
Phụ thuộc Maven
com.github.ethancarter
uni-page-jdbc
1.9
Ví dụ đơn giản
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
}
}
Lời cảm ơn
Trong quá trình phát triển khung công tác này, tôi đã nhận được nhiều ảnh hưởng và cảm hứng từ cộng đồng mã nguồn mở. Xin cảm ơn những bậc tiền bối đã chia sẻ kinh nghiệm kỹ thuật một cách vô tư, chính trí tuệ và đóng góp của các bạn đã giúp khung công tác này ra đời. Đặc biệt cảm ơn các dự án mã nguồn mở xuất sắc đã mang lại cảm hứng thiết kế và ý tưởng triển khai, những kinh nghiệm quý giá đó đã giúp tôi có thể tiếp tục tiến bước trên vai những người khổng lồ.
Xin cảm ơn tất cả các bậc tiền bối kỹ thuật đã đóng góp cho cộng đồng mã nguồn mở!
🌟 Ủng hộ dự án
Nếu bạn cảm thấy dự án này hữu ích với mình, hãy nhấn nút ⭐Star ở góc phải phía trên để ủng hộ tôi nhé!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---