Uni-Page กรอบงานแบ่งหน้า
Uni-Page คือกรอบงานแบ่งหน้าทั่วไปที่พัฒนาบน Java โดยออกแบบเชิงนามธรรมเพื่อให้บริการอินเทอร์เฟซการค้นหาข้อมูลแบบแบ่งหน้าที่統一สำหรับแหล่งข้อมูลต่าง ๆ กรอบงานนี้ใช้โครงสร้างแบบโมดูล และในขณะนี้ได้ผนวก JDBC, Mybatis, MongoDB, Elasticsearch และแหล่งข้อมูลอื่น ๆ รวมถึงมีระบบขยายที่ยืดหยุ่น
การออกแบบหลัก
การออกแบบหลักของกรอบงานนี้เน้นไปที่สี่องค์ประกอบสำคัญ:
- คำสั่งแบ่งหน้า (PaginationStatement)
- รองรับการกำหนดคำสั่งแบ่งหน้าสำหรับภาษาใดก็ได้
- มีอินเทอร์เฟซสำหรับพารามิเตอร์แบ่งหน้าแบบเดียวกัน
- อนุญาตให้ปรับแต่งตรรกะแบ่งหน้าเอง
- ตัวดำเนินการแบ่งหน้า (PaginationStatementExecutor)
- รับผิดชอบในการดำเนินการแบ่งหน้าคำสั่งค้นหา
- ให้ฟังก์ชันการสอบถามข้อมูลแบ่งหน้า
- มีกลไกตัวดำเนินการที่ขยายได้
- ชุดผลลัพธ์แบ่งหน้า (PaginationResultSet)
- อินเทอร์เฟซชุดผลลัพธ์แบบเดียวกัน
- รองรับการเข้าถึงข้อมูลตามชื่อคอลัมน์และดัชนี
- มีฟังก์ชันแปลงประเภทข้อมูล
- ออกแบบคล้ายกับ JDBC ResultSet
- ตัวจัดการชุดผลลัพธ์ (PaginationResultSetHandler)
- รองรับการปรับแต่งการแปลงชุดผลลัพธ์เอง
- มีฟังก์ชันแมปข้อมูลเป็นอ็อบเจ็กต์
เป้าหมายการออกแบบ
- ความเป็นหนึ่งเดียว
- ให้บริการอินเทอร์เฟซแบ่งหน้าค้นหาแบบเดียวกัน
- ซ่อนความแตกต่างของการใช้งานระหว่างแหล่งข้อมูลต่าง ๆ
- ทำให้การใช้งานแบ่งหน้าค้นหาง่ายขึ้น
- ความยืดหยุ่น
- รองรับการปรับแต่งคำสั่งแบ่งหน้า
- อนุญาตให้ขยายตัวดำเนินการได้
- มีวิธีจัดการชุดผลลัพธ์ที่หลากหลาย
- ความสามารถในการขยาย
- การออกแบบแบบโมดูล
- รองรับการเชื่อมต่อแหล่งข้อมูลใหม่ได้อย่างรวดเร็ว
- มีกลไกขยายจุดต่อเติม
- ความง่ายในการใช้งาน
- API ที่เรียบง่ายและเข้าใจง่าย
- การแปลงประเภทที่สมบูรณ์แบบ
- สนับสนุนคลาสเครื่องมือที่หลากหลาย
สถานการณ์การใช้งาน
- โครงการที่ต้องการจัดการการแบ่งหน้าแบบหลายแหล่งข้อมูลอย่างเป็นเอกภาพ
- แอปพลิเคชันระดับองค์กรที่ต้องการรองรับการแบ่งหน้าหลายแหล่งข้อมูล
โมดูลหลัก
uni-page
ไลบรารีการแบ่งหน้าหลัก ให้บริการอินเทอร์เฟซและการใช้งานแบบนามธรรมสำหรับการแบ่งหน้าuni-page-jdbc
โมดูลสนับสนุนแหล่งข้อมูล JDBC ให้บริการการแบ่งหน้าตาม JDBCuni-page-jdbc-mybatis
โมดูลบูรณาการ MyBatis ให้บริการการบูรณาการกับเฟรมเวิร์ก MyBatisuni-page-mongodb
โมดูลสนับสนุนแหล่งข้อมูล MongoDB ให้บริการการแบ่งหน้าตาม MongoDBuni-page-elasticsearch
โมดูลสนับสนุนแหล่งข้อมูล Elasticsearch ให้บริการการแบ่งหน้าตาม ESspring-boot-starter-web-uni-page
โมดูลสนับสนุนการแบ่งหน้าในสภาพแวดล้อม Spring MVC ให้การบูรณาการกับ Spring MVC ได้อย่างง่ายดายเหมือนกับการเขียนคอนโทรลเลอร์ทั่วไป- ผูกพารามิเตอร์การแบ่งหน้าโดยอัตโนมัติ
- แปลงผลลัพธ์การแบ่งหน้าโดยอัตโนมัติ
web-uni-page-test
โมดูลทดสอบการแบ่งหน้าในสภาพแวดล้อม Spring Boot Web ให้บริการทดสอบการบูรณาการฟังก์ชั่นแบ่งหน้าเริ่มต้นอย่างรวดเร็ว โดยใช้ uni-page-jdbc เป็นตัวอย่าง
การเพิ่ม Maven Dependency
com.github.ethancarter
uni-page-jdbc
1.9
ตัวอย่างง่าย
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
}
}
ขอขอบคุณ
ในการพัฒนาเฟรมเวิร์กนี้ ผมได้รับอิทธิพลและแรงบันดาลใจอย่างมากจากชุมชนโอเพ่นซอร์ส ขอขอบคุณผู้ที่แบ่งปันประสบการณ์ทางเทคนิคอย่างไม่เห็นแก่ตัว เป็นความรู้และการมีส่วนร่วมของพวกคุณที่ทำให้เฟรมเวิร์กนี้เกิดขึ้นได้ โดยเฉพาะอย่างยิ่งต้องขอขอบคุณโปรเจกต์โอเพ่นซอร์สยอดเยี่ยมที่นำเสนอแรงบันดาลใจในการออกแบบและแนวคิดการพัฒนา ประสบการณ์อันล้ำค่าเหล่านี้ทำให้ผมสามารถก้าวต่อไปบนบ่าของยักษ์ใหญ่
ขอขอบคุณผู้เชี่ยวชาญทางเทคนิคทุกท่านที่มีส่วนร่วมกับชุมชนโอเพ่นซอร์ส!
🌟 สนับสนุนโปรเจกต์
หากคุณคิดว่าโปรเจกต์นี้เป็นประโยชน์สำหรับคุณ ยินดีต้อนรับให้กด ⭐Star ที่มุมขวาบนเพื่อสนับสนุนผม!--- Tranlated By Open Ai Tx | Last indexed: 2025-08-28 ---