Java Web implementa la función de paginación y compartirla con todos, de la siguiente manera:
Use el marco: SSM
Base de datos: Oracle
Hablar de la consulta de paginación de Oracle es mucho más complicada que MySQL. Hablemos brevemente de ello aquí:
Consulta los primeros diez datos:
Seleccione * de (Seleccione ROWNUM WN, RN. * De (Seleccione ID, Title, Create_Time como CreateTime, Musictor, Musictitle de Krry_Blog por create_time desc) rn) wnwhere wn <= 10 y wn> 0
La gramática es más complicada.
Con el mismo resultado, la sintaxis de MySQL es: se puede resolver con un límite.
Seleccione ID, Título, Create_Time como CreateTime, Musictor, MusicttitleFrom Krry_Blog por create_time Desclimit 0,5
No hablaré sobre la construcción del marco SSM. Lo he presentado en detalle en el blog anterior. Aquí hablaré sobre la función de implementar la paginación web de Java.
Use el complemento js: krry_page.js y jQuery
Capa de persistencia mapeador:
Blogmapper.java
paquete com.krry.mapper; import java.util.hashmap; import java.util.list; import com.krry.entity.params;/** ** * * mapper: operar base de datos * Lista <Hashmap <String, Object >> FindBlogs (Params Params); / ** * Calcule el número de blogs * com.krry.dao.admin * Nombre del método: CountBlogs * @author Krry * @param params * @return int * @exception * @since 1.0.0 */ public Long countBlogs (); }
BlogMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.krry.mapper.BlogMapper" > < #{pageSize} y wn> #{pageno} </select> <!-consulta el número de blogs-> <select id = "countBlogs" resultType = "long"> select Count (*) de krry_blog </ectele> </mapper>Capa de negocios de servicio:
Clase de interfaz: iBlogService.java
paquete com.krry.service; import java.util.hashmap; import java.util.list; import javax.servlet.http.httpservletRequest; import org.apache.ibatis.annotations.param; import com.krry.entity.blog; import com.krry.entity.params;///** (implementado en impl) * @author asusaad * */public interfaz iBlogService {/** * consulta de paginación para todos los blogs * @param params * @return */public list <Hashmap <string, object>> findblogs (params params); / ** * Calcule el número de blogs * @param params * @return */ public long countBlogs (); } Clase de implementación de implicación: BlogService.java
paquete com.krry.service.impl; import java.util.hashmap; import java.util.list; import org.springframework.beans.factory.annotation.aUtowired; import org.springframework.stereotype.service; import com.krry.entity.params; import com.krry.mapper.blogmapper; import com.krry.service.iblogservice;/** * Implementación de la interfaz de la capa de servicio * @author asusaad * */ @servicio de blogservice de clase de servicio implementa iBlogService {@autowed blogmapper blogmapper; /*** Blog de consultas*/Lista pública <Hashmap <String, Object >> FindBlogs (Params Params) {// Lista de información del blog de consultas <Hashmap <String, Object >> Blog = BlogMapper.FindBlogs (Params); Blog de regreso; } / ** * Calcule el número de blogs * @param params * @return * / public long countBlogs () {long coutBlogs = blogMapper.countBlogs (); devuelve los bloques de cosecha; }}Capa de control del controlador:
KrryController.java
paquete com.krry.controller; import java.util.hashmap; import java.util.list; import org.springframework.beans.factory.annotation.auTowired; import ong.springframework.stereotype.controller; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.modelandView; import com.krry.entity.params; import com.krry.service.iblogservice;/** * krryController * controlador de controler, reenviado * @@autor ASUSATRI // significa que es un patrón de casos múltiples, y la capa web devuelta por cada usuario es diferente clase pública KrryController {@aUtowired iBlogService BlogService; /*** Página de inicio y consulta de paginación* @return*/@RequestMapping ("/index") Public ModelAndView Index (Params Params) {params.setPageno (0); params.setPageSize (10); // Al principio, solo se consultan 10 elementos // llamando a la lista de capa de negocios <Hashmap <String, Object >> Blogs = BlogService.FindBlogs (Params); // consulta el número de blogs largos de coutblogs = BlogService.CountBlogs (); ModelAndView ModelAndView = new ModelAndView (); modelandview.addoBject ("blogs", blogs); modelandView.addoBject ("CoutBlogs", CoutBlogs); modelandView.setViewName ("índice"); return ModelAndView; }/** * Consulta de paginación para la solicitud de Ajax * @param params * @return */@ResponseBody @RequestMapping ("/LoadData") public Hashmap <String, Object> LoadData (Params Params) {Hashmap <String, Object> MAP = New Hashmap <String, Object> (); List <Hashmap <String, Object >> Blogs = BlogService.FindBlogs (Params); map.put ("blogs", blogs); mapa de retorno; }}Aquí hay dos clases de entidad, que se utilizan como blog inyectado para la consulta de la base de datos, y dos parámetros para parámetros de consulta de paginación:
Establezca parámetros de datos: pageno (página siguiente): es el número de páginas actuales* La cantidad que se mostrará en la página siguiente páginas (página siguiente): la cantidad que se ha consultado (pageno) + la cantidad que se mostrará en cada página
En la base de datos, es wn <= pageSize y wn> pageno para consultar los datos de la página
Blog.java
paquete com.krry.entity;/** * * user * @author krry * @version 1.0.0 * */public class Blog {// principal clave privada ID de cadena; // Título del blog Título de cadena privada; // Autor de música Cadena privada Music Musictitle; // Título musical de cadena privada Musictitle; // Tiempo de creación Cadena privada CreateTime; Blog público (ID de cadena, título de cadena, String Musictor, String Musictitle, String CreateTime) {this.id = id; this.title = title; this.musictor = musictor; this.musictitle = musictitle; this.CreateTime = CreateTime; } public String getId () {return id; } public void setid (ID de cadena) {this.id = id; } public String gettitle () {Título de retorno; } public void settitle (título de cadena) {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
paquete com.krry.entity;/** * * params * @author krry * @version 1.0.0 * */public class params {private entero pageSize = 0; Integer privado pageno = 0; Public Integer getPageno () {return pageno; } public void setPageno (Integer pageno) {this.pageno = pageno; } public Integer getPageSize () {return PageSize; } public void setPageSize (Integer PageSize) {this.pagesize = PageSize; }} Página web índice.jsp
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%string path = request request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+path+"/"; pageContext.setAttribute ("BasePath", basepath);%> <! DocType html> <html> <fead> <title> pagination </title> <syle> <syle> <Style> Body {Background: Url ("Resource/Images/78788.jpg"); Splitte-Size: Cover;} .titless {font-size: 34px; text-align: center; color: negro; margen-bottom: 16px;} .ke_tabbox {min-hech. 0; relleno: 6px; posición: relativo;} .ke_tabbox .sendmy {text-align: center; Font-Family: "Microsoft Yahei"; tamaño de fuente: 28px; -webkit-text-llena-color: transparente; Antecedentes: -WebKit -Gradient (lineal, superior izquierda, fondo izquierdo, desde (#FD8700), a (#FF00B1)); -webkit-background-clip: text; margen: 8px auto 0; línea de línea: 35px;} .ke_tabbox .ke_table {width: 100%; margin-top: 26px;} .ke_tabbox th {background: #ccc; font-weight: negri;} .ke_tabbox .ke_table td, th {overflow: hidden; hidden; white-sapace; ellipsis; borde: 1px sólido #fff; relleno: 4px 12px; color: #666; font-size: 12px;} /*relacionado con la paginación* / .tzpage {font-size: 12px; posicion: absoluto; top: 480px; correcto: 0px;} #tbody tr: hover {background: #eaea;} .t_mode {padding-right: 4px;} #tbody .t_avbiaoq: hover {color: #ff6857; transición: .4s} #tbody .t_dele {padding-left: 4px;} .tzpage A {Text-Decoration: None; Border: Ninguno; Color:#7d7d7d; Background-Color:#F2F2F2; Border-Radius: 3px;} .tzPage A: Hover {Background:#DD5862; color: #fff;} .tzPage A,. 0.5em; margen-derecha: 5px; margen-bottom: 5px; min-width: 1em; text-align: centro; línea de línea: 22px; altura: 22px;} .tzpage .Current {fondo:#dd5862; #fff; border: Ninguno; border-radio: 3px;} .tzpage .current. .Current.Next {Color:#999; Border: 1px Solid#E5E5E5; Background: #fff;} .tm_psize_go {margin-right: 4px; float: izquierda; altura: 24px; line-height: 33px; posición: relativo; borde: 1px und#e5e5e5; color:#999} #tm_paggo {border-radio: 3px; altura: 18px; ancho: 30px; float: izquierda; text-align: center; border: 1px sólido #e5e5e5; línea de línea: 22px; color: #999} .sortdesc {border-top: 5px sólido; ancho: 0px; altura: 0px; pantalla: bloque en línea; alineado vertical: medio; borde-derecha: 5px sólido transparente; borde-izquierda: 5px sólido transparente; margen-izquierda: 5px;} .sortasc {border-bottom: 5px sólido sólido sólido: sólido; ancho: 0px; altura: 0px; pantalla: bloqueo en línea; vertical-align: medio; borde-derecha: 5px sólido transparente; borde-izquierda: 5px sólido transparente; margen-left: 5px;} .red {color: rojo} .green {color: verde} .hiDeadd {altura: 300px; Text-Align: Center; Línea de altura: 300px; margen-top: 16px; visualización: ninguno;} .hideadd a {font-size: 28px; -webkit-text-fill-color: transparent; fondos: -webkit-gradiente (lineal, izquierda superior, fondo izquierdo, de (#fd0051), a (#a22c93);-webkit-background-clip: text;} </syle> Display </p> <topla> <thead> <tr> <th> title </th> <th> music man </th> <th> title </th> <th> tiempo publicado </th> </tr> </thead> <tbody id = "tbody" data-itemCount = "$ {coutblogs}"> <c: boreach var = "blog" items = "$ {blogs}"} " <TD> <a> $ {Blog.title} </a> </td> <td> <a> $ {Blog.Musictor} </a> </td> <td> <a> $ {Blog.Musictor} </a> </td> <td> <a> $ {Blog.Musictle} </ad> </td> <TD> $ {Blog.CreateTime} </td> </tr> </c: foreach> </tbody> </table> <div id = "krrypage"> </div> </div> <script type = "text/javaScript" src = "$ {basePath} /Resource/js/jquery-1.11.3.min.js" <hrivit type = "text/javaScript" src = "$ {basepath} /Resource/js/krry_page.js"> </script> <script type = "text/javascript"> var basepath = "$ {basepath}"; </script> <script type = "text/javascript> var krryadminblog = {{{{itemCount) $("#krryPage").tzPage(itemCount, { num_display_entries : 5, //Num of main pages num_edge_entries : 4, //Num of edge pages current_page : 0, //Specify the selected page number items_per_page : 10, //How many prev_text display per page: "Previous page", next_text : "Next page", showGo:true, // showselect: false, devolución de llamada: function (pageno, psize) {// se transmitirán dos parámetros. }, // Establecer parámetros de datos: Pageno (página siguiente): el número de páginas que se mostrarán en la página siguiente* El número de páginas que se deben a la página siguiente loadData: function (pageno, pageSize) {pageno = pageno * pageSize; PageSize = Pageno + 10; $ .AJAX ({Tipo: "Post", URL: BasePath+"/LoadData", Data: {Pageno: Pageno, PageSize: PageSize}, Succes: Function (data) {if (data) {var html = ""; var BlogR = data.blogs; for (var i = 0, len = blogarr.length; i <len; i+{json) Blogarr [i]; title='"+json.NAME+"'>"+json.MUSICTOR+"</a></td>"+ " <td><a class='t_avbiaoq' title='"+json.MUSICTLE+"'>"+json.MUSICTITLE+"</a></td>"+ " <td>"+json.CREATETIME+"</td>"+ "</tr>"; }}; krryadminblog.initpage ($ ("#tbody"). data ("itemCount")); </script> </body> </html>Renderizaciones de paginación:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.