Java Web은 페이징 기능을 구현하고 다음과 같이 모든 사람과 공유합니다.
프레임 워크 사용 : SSM
데이터베이스 : Oracle
Oracle의 페이지 매김 쿼리에 대해 말하면 MySQL보다 훨씬 더 복잡합니다. 여기에서 간단히 이야기 해 봅시다.
처음 10 개의 데이터를 쿼리하십시오.
선택 *에서 (rownum wn, rn. *에서 선택
문법은 더 복잡합니다.
동일한 결과로 MySQL의 구문은 다음과 같습니다. 한계로 해결할 수 있습니다.
id, title, create_time을 CreateTime, musictor, krry_blog 주문 0,5로 선택하십시오.
SSM 프레임 워크의 구성에 대해서는 이야기하지 않을 것입니다. 이전 블로그에서 자세히 소개했습니다. 여기서는 Java Web Pagination 구현 기능에 대해 이야기하겠습니다.
플러그인 js : krry_page.js 및 jQuery를 사용하십시오
맵퍼 지속성 층 :
Blogmapper.java
package com.krry.mapper; import java.util.hashmap; import java.util.list; import com.krry.entity.params;/** * * 맵퍼 : 운영 * @author krry * @version 1.0.0 */public interface blogmapper {/** * @Param * @param params * @param params List <hashmap <string, object >> findBlogs (params params); / ** * 블로그 수를 계산 * com.krry.dao.admin * 메소드 이름 : countblogs * @author krry * @param params * @return int * @except * @since 1.0.0 */ public long countblogs (); } blogmapper.xml
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namper"> < "! 모든 블로그 정보-> <select id = "findBlogs"resulttype = "java.util.hashmap"parametertype = "params"> select * from (select rownum wn, rn. #{pageno} </select> <!-블로그 수 쿼리-> <select id = "countblogs"resulttype = "long"> krry_blog에서 count (*) select count (*select> </mapper>서비스 비즈니스 계층 :
인터페이스 클래스 : iBlogservice.java
패키지 com.krry.service; import java.util.hashmap; import java.util.list; import javax.servlet.http.httpservletrequest; import org.apache.ibatis.annotations.antations.param; import com.krry.entity.blog com.krry.entity.entity.entity.entity.entity. (impl) * @author asusaad * */public interface iblogservice {/** * 모든 블로그에 대한 Pagination 쿼리 * @param params * @return */public list <hashmap <string, object >> findblogs (params params); / ** * 블로그 수를 계산 * @param params * @return */ public long countblogs (); } Imp 구현 클래스 : blogservice.java
패키지 com.krry.service.impl; import java.util.hashmap; import java.util.list; import org.springframework.beans.bean.annotation.autowired; import org.springframework.stereotyp.service; import org.springframework.wevelllet.modview; com.krry.entity.params; import com.krry.mapper.blogmapper; import com.krry.service.iblogservice;/** * 서비스 계층 인터페이스 구현 * @uthor asusaad */ @servicepublic class blogservice emplements iblogservice {@autowired private blogmppermapper; /*** 쿼리 블로그*/공개 목록 <hashmap <string, object >> findBlogs (params params) {// 쿼리 블로그 정보 목록 <hashmap <string, object >> blog = blogmapper.findblogs (params); 리턴 블로그; } / ** * 블로그 수를 계산 * @param params * @return * / public long countblogs () {long coutblogs = blogmapper.countBlogs (); Coutblogs를 반환합니다. }}컨트롤러 제어 계층 :
krrycontroller.java
pack org.springframework.web.bind.annotation.responsebody; import org.springframework.web.servlet.modelandview; import com.krry.entity.params; import com.krry.service.iblogservice;/** * krrycontroller * 컨트롤러 요청 * @authora, @auther, @authora, @authera aSUAD. // 다중 사례 패턴임을 의미하고 각 사용자가 반환 한 웹 계층은 다른 공개 클래스 KrryController {@autowired private iblogservice blogservice; /*** 홈페이지 및 Pagination Query* @return*/ @requestmapping ( "/index") public modelandview index (params params) {params.setpageno (0); params.setpagesize (10); // 처음에는 10 개의 항목 만 쿼리됩니다. // 비즈니스 계층 목록을 호출 <hashmap <string, object >> blogs = blogservice.findblogs (params); // 블로그 수 쿼리 Long CoutBlogs = blogservice.countBlogs (); ModelAndView ModelAndView = 새 ModelAndView (); ModelAndView.AdDoBject ( "블로그", 블로그); modelandview.addoBject ( "coutblogs", coutblogs); ModelAndView.SetViewName ( "index"); Return ModelandView; }/** * ajax 요청에 대한 Pagination Query * @param params * @return */@responsebody @requestmapping ( "/loaddata") public hashmap <string, object> loaddata (params params) {hashmap <String, map = new Hashmap <String, object> (); 목록 <hashmap <string, object >> blogs = blogservice.findblogs (params); map.put ( "블로그", 블로그); 리턴 맵; }}여기에는 데이터베이스 쿼리의 주입 된 블로그로 사용되는 두 개의 엔티티 클래스와 Pagination Query 매개 변수의 두 매개 변수가 있습니다.
데이터 매개 변수 설정 : pageno (다음 페이지) : 현재 페이지 수* 다음 페이지에 표시 될 수량 (다음 페이지) : 쿼리 된 수량 (pageno) + 각 페이지에 표시 할 수량
데이터베이스에서는 페이지 데이터를 쿼리하기 위해 wn <= pagesize 및 wn> pageno입니다.
blog.java
패키지 com.krry.entity;/** * * user * @author krry * @version 1.0.0 */public class blog {// 기본 키 개인 문자열 ID; // 블로그 제목 개인 문자열 제목; // 음악 저자 개인 문자열 음악 사업; // 음악 제목 개인 문자열 musictitle; // 생성 시간 개인 문자열 createTime; 공개 블로그 (문자열 ID, 문자열 제목, 문자열 Musictor, String Musictitle, String CreateTime) {this.id = id; this.title = 제목; this.musictor = musictor; this.musictitle = musictitle; this.createTime = CreateTime; } public String getId () {return id; } public void setId (String id) {this.id = id; } public string getTitle () {return title; } public void settitle (문자열 제목) {this.title = title; } public String getMusictor () {return Music; } public void setMusictor (String Music) {this.musictor = musictor; } public String getMusictitle () {return musictitle; } public void setMusictitle (String MusicTitle) {this.musictitle = musictitle; } public String getCreateTime () {return createTime; } public void setCreateTime (String CreateTime) {this.createTime = createTime; }} params.java
패키지 com.krry.entity;/** * * params * @author krry * @version 1.0.0 * */public class params {private integer pagesize = 0; 개인 정수 pageno = 0; 공개 정수 getpageno () {return pageno; } public void setpageno (정수 pageno) {this.pageno = pageno; } public Integer getPagesize () {return pagesize; } public void setPagesize (Integer Pagesize) {this.pagesize = pagesize; }} 웹 페이지 인덱스 .jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <%string path = request.getconteptath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; pagecontext.setAttribute ( "BasePath", BasePath);%> <! doctype html> <html> <head> <title> pagination> <스타일> Body {Background : URL ( "Resource/Images/78788.jpg"); 백그라운드 크기 : Cover;} .Titless {font-size : 34px; Text-Align : CENTRE; COLOR : BLACK; Margin-BOTTOM : 16PX;} .KE_TABBOX {Min-Height : 556PX; 556PX; 0; 패딩 : 6px; 위치 : 상대;} .ke_tabbox .sendmy {text-align : center; Font-Family : "Microsoft Yahei"; 글꼴 크기 : 28px; -webkit-text-fill-color : 투명; 배경 : -webkit -gradient (선형, 왼쪽 상단, 왼쪽 하단, (#fd8700), (#ff00b1)); -webkit-background-clip : 텍스트; 마진 : 8px auto 0; line-height : 35px;} .ke_tabbox .ke_table {너비 : 100%; 마진-탑 : 26px;} .ke_tabbox th {background : #ccc; font-weight : bold;} .ke_tabbox. Ellipsis; 테두리 : 1px Solid #fff; 패딩 : 4px 12px; 컬러 : #666; font-size : 12px;} /*Paglination 관련* / .tzpage {font-size : 12px; 위치 : 절대; 상단 : 480px; 오른쪽 : 0px;} #tbody tr : hover {#eaea; .t_mode {padding-right : 4px;} #tbody .t_avbiaoq : hover {color : #ff6857; transition : .4s} #tbody .t_dele {padding-left : 4px;} .tzpage a {텍스트-결정 : 없음; 국경 : 없음; 색상 :#7d7d7d; 배경색 :#f2f2f2; border-radius : 3px;} .tzpage a : hover {배경 :#dd5862; 컬러 : #fff;} .tzpage a, .tzpage span {float; 0.5EM; 마진-오른쪽 : 5px; 마진-바닥 : 5px; min-width : 1em; 텍스트-정렬 : 중심; 라인-하이트 : 22px; 높이 : 22px;} .current {배경 :#dd5862; color : #fff; border : none; border-radius : 3px;} .current.next {색상 :#999; 경계 : 1px Solid#e5e5e5; 배경 : #fff;} .tm_psize_go {margin-right : 4px; float : 왼쪽; 높이 : 24px; 라인-하이트 : 33px; 위치 : 상대적; 테두리 : 1px 고체#e5e5e5;#999} #TM_PAGEGO {Border-Radius : 3px; 높이 : 18px; 너비 : 30px; 플로트 : 왼쪽; 텍스트-정렬 : 중심; 테두리 : 1px solid #e5e5e5; line-height : 22px; color : #999} .sortdesc {Border-Top : 5px 단단한; 폭 : 0px; 높이 : 0px; 디스플레이 : 인라인-블록; 수직-균형 : 수직-균형 : 중간; 경계선 : 5px 고체 투명; 경계-왼쪽 : 5px 솔리드 투명; 마진-왼쪽 : 5px;} .Sortasc {경계-바닥 : 5px 고체; 높이 : 0px; 투명한; 경계-왼쪽 : 5px 솔리드 투명; 마진-왼쪽 : 5px;} .red {color : red} .green {color : green} .hideadd {height : 300px; 텍스트 정렬 : 센터; 라인 높이 : 300px; 마진-탑 : 16px; 디스플레이 : none;} .hideadd a {font-size : 28px; -webkit-text-fill-color : transparent; background : -webkit- gradient (선형, 왼쪽 상단, 왼쪽 하단, (#fd0051);-a22c93);-webkit-background-clip : text; </style> </style> </style> </style> </style>. 디스플레이 </p> <table> <thead> <tr> <th> Title </th> <th> Music Man </th> <th> 음악 제목 </th> <th> 게시 된 시간 </th> </tr> </thead> <tbody id = "tbody"data-itemcount = "$ {coutblogs}"> <td> <a> $ {blog.title} </a> </td> <td> <a> $ {blog.musictor} </a> </td> <td> <a> $ {blog.musictor} </a> </td> <td> <a> $ {blogictle} </a> </a> <td> $ {blog.createTime} </td> </td> </td> </c : foreach> </tbody> </table> <div id = "krrypage"> </div> </div> <script type = "text/javaScript"src = "$ {basepath} /resource/jquery-11.11.Min.js">3.Min.3.Min.3.Min.33.Min.11.Min.11.Min.11. 유형 = "text/javaScript"src = "$ {basepath} /resource/js/krry_page.js"> </script> <script type = "text/javaScript"> var BasePath = "$ {basepath}"; </script> <script type = "text/javascript"> var krryad = { initpage : function (itemcount) {$ ( "#krrypage"). tzpage (itemcount, {num_display_entries : 5, // 메인 페이지 num_edge_entries : 4, // num of Edge pages current_page : 0, 선택한 페이지 번호 airt_per_page : // prevex _ nexttex : ", 다음 puret : // 페이지 ", showgo : true, show showselect : false, 콜백 : function (pageno, psize) {// 두 매개 변수가 다시 전달됩니다. 첫 번째는 페이지 수이고, 두 번째는 각 페이지에 표시 될 페이지 krryadminblog.loaddata (pageno, psize); }, // 데이터 매개 변수 설정 : pageno (다음 페이지) : 다음 페이지에 표시 할 페이지 수* 다음 페이지에 표시 할 페이지 수 (다음 페이지) : 쿼리 수 (pageno) + 각 페이지에 표시 될 페이지 수는 wn <= = = pageno입니다. loadData : function (pageno, pagesize) {pageno = pageno * pagesize; pagesize = pageno + 10; $ .ajax ({type : "post", url : basepath+"/loaddata", data : {pageno : pageno, pagesize}, success : function (data) {if (data) {var html = ""; var blogar = data.blogs; for (len = blogarr.length; i ++); html+= "<tr>"+"<td> <a class = 't_avbiaoq'title = '+json.title+"'> "+json.title+"</a> </td> "+"<td> <a class = 't_avbiaoq' title = '+json.name+"'>"+json.musictor+"</a> </td>"+"<td> <a class = 't_avbiaoq'title = '+json.musictle+"'> "+json.musictitle+"</a> </td> "<td>"+json. " "</tr>"; "#tbody"). html (html); }}; krryadminblog.initpage ($ ( "#tbody"). data ( "itemcount")); </script> </body> </html>페이지 매김 렌더링 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.