SpringMVC+Hibernate ได้กลายเป็นการรวมกรอบที่หลายคนใช้ตอนนี้ เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้และสำรวจ เนื่องจากโครงการหลายโครงการในโครงการพัฒนาใช้ฟังก์ชั่นรายการเพจที่นี่เราจึงอ้างถึงข้อมูลบางอย่างบนอินเทอร์เน็ตและใช้ SpringMVC4+Hibnerate4 เพื่อสรุปในขณะที่เรียนรู้และสรุปและรับรหัสฟังก์ชั่นเพจ แม้ว่าจะไม่จำเป็นต้องเป็นสากล แต่ก็มีค่าอ้างอิงสำหรับผู้เริ่มต้น
กระบวนการพื้นฐานของการใช้การปนเปื้อน:
1. หมวดหมู่เครื่องมือการแบ่งหน้า
แนวคิด:
1. เขียนคลาสหน้าและกำหนดแอตทริบิวต์ซึ่งควรรวมถึง: ชุดผลลัพธ์การสืบค้นจำนวนบันทึกการสืบค้นทั้งหมดจำนวนระเบียนที่แสดงต่อหน้าและหน้าใดบ้าง
2. เขียนคลาสหน้าและกำหนดวิธีการซึ่งควรรวม: จำนวนหน้าทั้งหมด, การเริ่มต้นการบันทึกของหน้าปัจจุบัน, หน้าแรก, หน้าถัดไป, หน้าก่อนหน้า, หน้าสุดท้ายและวิธีการอื่น ๆ
รหัสมีดังนี้:
แพ็คเกจ cn.myic.model; นำเข้า java.util.list; หน้าคลาสสาธารณะ <e> {// ชุดผลลัพธ์รายการส่วนตัว <E> รายการ; // จำนวนการสืบค้นทั้งหมดบันทึก INT TOTALRECORDS ส่วนตัว; // จำนวนระเบียนต่อหน้าส่วนตัว INT PAGESIZE; // หน้าส่วนตัว pageno ส่วนตัว; /*** @return จำนวนหน้าทั้งหมด**/public int getTotalPages () {return (totalRecords+pagesize-1)/pagesize; } / *** คำนวณบันทึกหน้าเริ่มต้นปัจจุบัน* @param pagesize จำนวนการบันทึกต่อหน้า* @param currentPage หน้าใดในขณะนี้* @return หน้าปัจจุบันเริ่มบันทึกหมายเลขบันทึก* / int countoffset สาธารณะ (int currentPage, หน้า int) ชดเชยกลับ; } / *** @return หน้าแรก** / public int gettoppageno () {return 1; } / *** @return หน้าก่อนหน้า** / public int getPreviousPageno () {ถ้า (pageno <= 1) {return 1; } return pageno-1; } / *** @return หน้าถัดไป** / public int getnextpageno () {ถ้า (pageno> = getBottompageno ()) {return getBottompageno (); } return pageno+1; } / *** @return หน้าสุดท้าย** / public int getBottompageno () {return getTotalPages (); } รายการสาธารณะ <e> getList () {รายการส่งคืน; } โมฆะสาธารณะ setlist (รายการ <e> รายการ) {this.list = list; } public int getTotalRecords () {return totalRecords; } โมฆะสาธารณะ settotalrecords (int totalRecords) {this.totalRecords = TotalRecords; } public int getPagesize () {กลับ pageSize; } โมฆะสาธารณะ setPagesize (int pageize) {this.page.ize = pageSize; } สาธารณะ int getPageno () {return pageno; } โมฆะสาธารณะ setpageno (int pageno) {this.pageno = pageno; - 2. วิธีเลเยอร์
IDEA: กำหนดวิธีการสืบค้น pagination ตั้งค่าพารามิเตอร์: เมื่อหมายเลขหน้าและจำนวนระเบียนที่แสดงในแต่ละหน้า
รหัสมีดังนี้:
/ *** การสืบค้น pagination* @param HQL เงื่อนไขการสืบค้น* @param ออฟเซ็ตเริ่มบันทึก* @param ความยาว Query บันทึกหลายครั้งในแต่ละครั้ง* @return ส่งคืนคอลเลกชันบันทึกการสอบถาม*/ @suppresswarnings ("unchecked") @override รายการสาธารณะ ลอง {Query Query = getSession (). createquery ("จากหลักสูตร"); query.setFirstResult (ชดเชย); query.setMaxResults (ความยาว); entityList = query.list (); } catch (runtimeException re) {โยน re; } return entityList; - 3. วิธีการบริการเลเยอร์
แนวคิด:
1. กำหนดวิธีการสืบค้น pagination และตั้งค่าพารามิเตอร์: เมื่อหมายเลขหน้าและจำนวนระเบียนที่แสดงในแต่ละหน้าวัตถุ pagination (หน้า) ที่ส่งคืนผลลัพธ์การสืบค้นผลลัพธ์
2. ผ่านชั้น DAO รับจำนวนระเบียนทั้งหมดของเอนทิตีแบบสอบถาม
3. รับจำนวนระเบียนที่เริ่มต้นในหน้าปัจจุบัน
4. ผ่านเลเยอร์ DAO รับชุดผลลัพธ์การสืบค้น PAGINATION
5. ตั้งค่าเป็นวัตถุหน้า
รหัสมีดังนี้:
/ *** การสืบค้น pagination* @param CurrentPage หน้าปัจจุบันหมายเลขหน้า: จำนวนหน้าที่แสดงตอนนี้* @param หน้าจำนวนระเบียนที่แสดงต่อหน้า* @@return Bean ที่แนบข้อมูล pagination (รวมถึงรายการชุดบันทึก)**/ @suppresswarnings ( วิธีการที่สร้างโดยอัตโนมัติหน้าสตับหน้า = หน้าใหม่ (); // จำนวนบันทึกทั้งหมด int allrow = coursedao.getallrowcount (); // หน้าปัจจุบันเริ่มบันทึก int offset = page.countoffset (CurrentPage, PageSize); // รายการผลลัพธ์การสืบค้น PAGINATION รายการ <Sourse> list = coursedao.QueryForPage (ชดเชย, หน้า); page.setPageno (CurrentPage); page.setPagesize (pageSize); page.settotalrecords (allrow); page.setList (รายการ); หน้ากลับ; -
4. วิธีการเลเยอร์คอนโทรลเลอร์
การออกแบบเลเยอร์คอนโทรลเลอร์เมื่อใช้การค้นหาเพจเปิดใช้งานคุณจะต้องผ่านพารามิเตอร์หมายเลขหน้าปัจจุบันเท่านั้น
รหัสมีดังนี้:
@RequestMapping (value = "/showall.do") สตริงสาธารณะ findallCourse (คำขอ httpservletRequest, การตอบกลับ httpservletResponse) {ลอง {String pageno = request.getParameter ("pageno"); if (pageno == null) {pageno = "1"; } หน้าหน้า = courseservice.QueryForPage (Integer.ValueOf (Pageno), 10); request.setAttribute ("หน้า" หน้า); รายการ <Course> หลักสูตร = page.getList (); request.setAttribute ("หลักสูตร", หลักสูตร); } catch (exception e) {e.printstacktrace (); } return "course/course_list"; - 5. ดูการแสดงเลเยอร์ JSP
ปุ่มหลายปุ่มสำหรับหน้าเพจ JSP จะปรากฏขึ้นตามคำพิพากษาของหมายเลขหน้าปัจจุบัน
รหัสมีดังนี้:
<td colspan = "6" align = "center" bgcolor = "#5ba8de"> รวม $ {page.totalrecords} recordStotal $ {page.totalpages} หน้าปัจจุบัน <br> <a href = "$ {path} name = "fristpage" value = "home"/> </a> <c: เลือก> <c: เมื่อ test = "$ {page.pageno! = 1}"> <a href = "$ {path}/course/showall.do?pageno = $ {page.previouspageno}" </c: เมื่อ> <c: มิฉะนั้น> <อินพุต type = "ปุ่ม" ปิดใช้งาน = "ปิดใช้งาน" name = "preventPage" value = "หน้าก่อนหน้า"/> </c: มิฉะนั้น> </c: เลือก> <c: เลือก> <c: เมื่อทดสอบ = "$ {page.pageno! href = "$ {path} /course/showall.do?pageno = $ {page.nextpageno}"> <อินพุต type = "button" name = "nextPage" value = "NextPage"/> </a> </c: เมื่อ> </c: เลือก> <a href = "$ {path} /course/showall.do?pageno = $ {page.bottompageno}"> <อินพุตประเภท = "ปุ่ม" ชื่อ = "lastPage" value = "หน้าสุดท้าย"/> </a>เอฟเฟกต์หน้า:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น