Il y a quelques jours, j'ai partagé la mise en œuvre de la pagination par requête de pagination SQL manuscrite ici. Jetons maintenant un coup d'œil à utiliser le plugin de pagination MyBatis pour implémenter la pagination.
La raison de l'utilisation du plug-in Paging est de simplifier l'écriture du code SQL et d'obtenir une meilleure pagination physique, ce qui peut également réduire les erreurs que la rédaction d'un code SQL complet.
Adresse du projet de démonstration du plugin MyBatis Paging: Free-Mybatis_pagehelper_jb51.rar
J'utilise la mise en œuvre du projet Maven ici:
1. Importez d'abord les dépendances du plugin de pagination:
<dependency> <proupId> com.github.pagehelper </rombasid> <ArtifActid> PageHelper </letefactive> <DERNÉRATEUR> 5.0.0 </ version> </Dependance>
2. Configurer le plug-in intercepteur de pagination
Il existe deux plug-ins d'interceptor de page de configuration pour les documents officiels
1. Configurez le plug-in intercepteur dans la configuration MyBatis XML
<! - L'emplacement des plugins dans le fichier de configuration doit répondre aux exigences, sinon une erreur sera signalée. L'ordre est le suivant: Properties?, Paramètres ?, TypeAliases?, TypeHandlers ?, ObjectFactory?, ObjectWrapperFactory ?, Plugins?, Environments ?, DatabaseIdProvider? interceptor = "com.github.pagehelper.pageInterceptor"> <! - Utilisez la méthode suivante pour configurer les paramètres, et tous les paramètres seront introduits plus tard -> <propriété name = "param1" value = "value1" /> </gingin> </ plugins>
2. Configurez le plugin intercepteur dans le fichier de configuration de ressort
En utilisant la méthode de configuration d'attribut de Spring, vous pouvez utiliser l'attribut des plugins pour le configurer comme ce qui suit:
<bean id = "sqlSessionFactory"> <! - Faites attention à d'autres configurations -> <propriété name = "plugins"> <Array> <Ean> <propriété name = "Properties"> <! - Configurez les paramètres à l'aide de la méthode suivante, configurez une ligne -> <value> Params = Value1 </value> </ propriété> </ank>
Ici, j'utilise le deuxième type de mon projet, et les paramètres dedans sont configurés en fonction de la situation réelle, ou ils peuvent être configurés sans
3. Méthodes d'appel
Les instructions SQL de couche de mappel sont écrites en fonction de la méthode de requête générale, sans rédaction de pagination:
<! - Pagination Query -> <Select id = "finds" resultType = "country"> SELECT ID, CountryName, countrycode from country </lect>
Interface de couche de mappeur:
/ ** * Query * @param params * @ return * / public list <pountry> finds ();
Service Service Service Couche Interface:
/ ** * Pagination Query * @param Params Paramètres de pagination Pageno (numéro de page), pagesize (nombre de requêtes par page) * @return * / public pageinfo <country> finds (params params);
Service Business Layer Implémentation Classe: PageHelper.StartPage (1, 10); Le premier paramètre indique quelle page, et le deuxième paramètre indique le nombre d'enregistrements affichés sur chaque page
Après avoir exécuté le PageHelper.StartPage (1, 10); Instruction, la première méthode de sélection immédiatement suivante sera paginée: list <pountry> blogs = countrymapper.finds ();
Utilisez ensuite PageInfo pour envelopper les résultats de la requête, PageInfo <Country> PageInfo = new PageInfo <Country> (blogs);
et retourner pageinfo sur la couche de contrôle
/ ** * Query * / public pageInfo <country> finds (params params) // requête int pageno = params.getpageno (); int pageSize = params.getPageSize (); PageHelper.StartPage (Pageno, PageSize); List <country> blogs = countrymapper.finds (); // Enveloppez le résultat avec PageInfo <Country> PageInfo = new PageInfo <Country> (blogs); Retour pageInfo; }
Après le retour PageInfo ici, passez les paramètres de pagination des paramètres et l'analyse PageInfo à la couche de contrôleur:
List <country> clist = pageinfo.getList (); Ensuite, mettez le Clist dans la portée et utilisez <C: ForEach> </ C: ForEach> pour faire boucle pour obtenir des données de pagination / ** * Page d'accueil et une requête de pagination * @return * / @requestmapping ("/ index") public ModelAndView index (params params) {ModelandView ModelAndView = new ModelView (); // d'abord la première page, requête 10 params.setpageno (1); Params.SetPageSize (10); PageInfo <Country> PageInfo = CountryService.finds (params); List <country> clist = pageinfo.getList (); // Quantité de requête longues Couts = CountryService.Counts (); ModelAndView.AddObject ("Clist", Clist); ModelAndView.AddObject ("COUTS", COUTS); ModelAndView.SetViewName ("index"); return ModelAndView; }Ce qui précède sont tous les codes d'implémentation pour les pages clés. Regardez maintenant les codes pour toutes les configurations et implémentations:
pom.xml
<Project Xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://maven.apache.org/pom/4.0.0" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <ModelVersion> 4.0.0 </ ModelVenion> <ProupId> com.krry </proupId> <ArtifActid> maven_pageHepler_ora </ artifactid> </packaging> war </packaging> <version> 1.0-snapsho <name> maven_pagehepler_ora </name> <url> http://maven.apache.org </url> <projeties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <! - Générateur MyBatis -> <! <IBLETJAVAPROJECT> $ {basasedir} / src / main / java </ TargetJavaproject> <TargetMapperPackage> com.isea533.mybatis.mapper </ TargetMapperPackage> </ TargetModelpackage> com.isea533.mybatis.model </ibletModelpackage> <TargetResourcesProject> $ {basaseir} / src / main / Resources </ TargetResourcesProject> <TargetXmlPackage> Mappen </ TargetXmlPackage> <! - Compile JDK version -> <jdk.version> 1.6 </jdk.version> <! - Version de dépendance> <Mybatis.version> 3.3.1 <Mapper.Version> 3.3.6 </mapper.Version> <PageHelper.Version> 5.0.0 </PageHelper.Version> <MySql.Version> 5.1.29 </ /mysql.version> <printemps.version> 4.1.2.release </sspring.version> <mybatis.spring.version> 1.2.4 </mybatis.spring.version> </properties> <dependces> <dependency> <proupId> JUnit </proupId> <profactid> JUnit </ artifactid> <version> 4.11 </ version> <ccope> Test </cope> </Dedency> <pedency> <ArtefactId> LOG4J </ ArfactId> <Dersion> 1.2.17 </DERNIERSE> </ Dependency> <! - Web -> <Dedency> <ProupId> javax.servlet </proupId> <aRtifactid> Servlet-API </ artifactid> <weroase> 2.5 </-version> <cope> fourni </cope> </Dependency> <Dependance> <GroupId> javax.servlet.jsp </prôdId> <Artifactid> jsp-api </letifactid> <version> 2.1 </ version> <ccope> fourni </ccope> </dependency> <dependency> <proupId> javax.servlet </proped> </ artifiCtid> JSTL </RetifActid> <De version> <GroupId> javax.ws.rs </rom grouped> <Artifactid> javax.ws.rs-api </ artifactid> <version> 2.0 </prewing> </pedigency> <dependency> <proupId> javax.websocket </prouprid> <ptifactid> javax.webax.websocket> <Durstor <ProupId> javax.annotation </rom grouped> <Artifactid> javax.annotation-api </ artifactid> <version> 1.2 </prewing> </pedigency> <dependency> <proupId> javax.transaction </prouprid> <aRtifactid> javax.transaction-API </ artifactid> <version> 1.2 </ version> <Dedency> <ProupId> org.SpringFramework </proupId> <Artifactid> Spring-Context </Retifactid> </Dependency> <Dependency> <ProupId> org.springFramework </proupId> <Artifactid> Spring-normal </ Artifactid> </Dedency> <Dedency> <ProupId> Org.Spring <ArtefactId> Spring-OxM </ artifactid> </ Dependency> <Dedency> <GroupId> org.SpringFramework </proupId> <ErtifActid> Spring-JDBC </ Artifactid> </ Dependency> <Dependency> <ProupId> org.springFramework </proupId> <ArtifActid> Spring-TX </letifactID> <GroupId> org.springframework </letefactive> </dependency> <dependency> <proupId> org.springframework </prouprid> <ArtifactId> Spring-web </letefactid> </Dedency> <Dependency> <proupId> org.springframe </proupId> <ArtifActid> Spring-Aop </tifactID> <GroupId> org.springframework </rom groupeid> <Ertifactid> Spring-test </ artifactId> </Dependency> <! - Spring-oxm Dependance -> <Dedency> <ProupID> org.codehaus.castor </prouprid> <Artifactid> Castor-xml </ artifactid> <version> 1.3.3 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version> 2.4.2 </ version> </ dépendance> <! - Spring-AOP Dependency -> <Dedency> <ProupId> org.AspectJ </proupId> <ArtifActid> AspectJwweaver </ Artifactid> <version> 1.8.2 </ version> </ Dependency> <! - Fichier de charge -> <Dedency> <ProupId> Commons-Fileupload </ GroupID> <ArtefactId> Commons-fileupload </ artifactId> <Dersion> 1.3.1 </ version> </dependency> <! - MySql -> <Dedency> <GroupId> MySql </prôdId> <Artefactive> MySQL-Connector-Java </Rifactid> <fridency> {mysql.version} </De version> </Dedency> <! <dependency> <proupId> com.alibaba </rompuprid> <letifactid> druid </ artifactid> <version> 1.0.11 </ version> </dependency> <! - Mybatis -> <dependency> <proupId> org.mybatis </proupId> <Artifactid> Mybatis </ artifactid> <version> </Dependency> <Dedency> <GroupId> org.mybatis </rombandid> <Artifactid> Mybatis-Spring </ ArtifactId> <DersonD> $ {Mybatis.spring.version} </preindid> </pependency> <! - Mybatis Generator -> <Dedency> <ProudId> Org.Mybatis.Gnerator </ Groupid> <ArtefactId> MyBatis-Generator-Core </ Artifactid> <Dersion> 1.3.2 </DERNIFRIENT> <COPE> COMPILE </ SCOPE> <PORTEAL> VRUE </PORTEAL> </ Dependency> <! - Page Plugin -> <Dedency> <ProupId> com.gitHub.pagehelper </proupId> <ArtifAtid> PageHelper </tifactId> <version> $ {PageHelper.Version} </ version> </ Dependency> <! - General Mapper -> <Dedency> <ProupId> Tk.mybatis </proupId> <ArtifactId> Mapper </ Artifactid> <version> $ {Mappe <ArtefactId> Commons-Lang3 </ Artifactid> <De version> 3.3.2 </ Version> </Dependency> </Dependency> <DependencyManagement> <Dependces> <Dependency> <ProupId> Org.SpringFramework </proupID> <ccope> Import </ Scope> </ Dependency> </ Dependency> </ Dependency> </DependencyManagement> <Depositories> <Fepository> <id> Nexus </d> <name> Local Private Nexus </name> <url> http://mave.oschina.net/ablent/groups/Public/ </url> </ releases> <napshots> <veabled> false </ableable> </napshots> </ Repository> <Eppository> <id> SONATYPE-NEXUS-RELASES </id> <name> SONATYPE NEXUS Releases </name> <url> http://oss.sonatype.org/content/repositiens/releases </ url> <velable> true </ enabled> </ releases> <napshots> <veabled> false </abled> </napshots> </ Repository> <embitory> <id> Sonatype-Nexus-Snapshots </id> <name> NEXUS SONATYPE </nom> <url> http://oss.sonatype.org/content/repositories/snapshots </url> <leases> <cabled> false </abled> </ releases> <napshots> <cabled> true </velow <GroupId> org.apache.maven.plugins </rom grouped> <lefactive> maven-compiler-plugin </ artifactive> <version> 3.2 </ version> <fonfi configuration> <source> 1.7 </ source> </ Cible> 1.7 </ Target> </FIGIGRUPTION> </Kingin> </glugins> </uild> </prètement>applicationContext.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http://www.springframework.org/schema/tx" xmlns: util = "http://www.springframeworkwork.org/schema" xmlns: p = "http://www.springframework.org/schema/p" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0. Scanning -> <Context: Component-Scan Base-Package = "com.krry"> </ Context: ComponentScan> <! - Importer des fichiers de ressources externes -> <Context: Property-placeholder location = "ClassPath: JDBC.Properties" /> <! - Configurer la source de données DRuid -> <datasource "Init-Method =" Init " name = "driverclassname" value = "$ {db.driver}" /> <propriété name = "url" value = "$ {db.url}" /> <propriété name = "username" value = "$ {db.Username}" /> <propriété name = "mot de passe" Value = "$ {db.password}" /> </ bean> id = "txmgr"> <propriété name = "dataSource" ref = "dataSource"> </ propriété> </ bean> <! - Activer le pilote d'annotation de transaction -> <tx: configurer la transaction-manager = "txmgr" /> <! - Configurez le SQLSessionfactory de MyBatis " Ref = "DataSource" /> <propriété name = "configLocation" value = "classpath: mybatis-config.xml"> </ propriété> <propriété name = "typealiasespackage" value = "com.krry.entity" /> <propriété name = "plugins"> <array> <ean> <! - La configuration montre ici principalement comment l'utiliser. Si vous le comprenez, vous devez supprimer la configuration suivante -> <propriété name = "Properties"> <value> </value> </ propriété> </-bean> </ array> </ propriété> </ank> <! - La configuration peut scanner un scanner qui peut les séparer avec des comas value = "com.krry.mapper"> </ propriété> <propriété name = "sqlSessionFactoryBeAnName" value = "sqlSessionFactory"> </ Property> </bans>mybatis-config.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <paramètres> name = "cacheenabled" value = "true" /> <! - Éteignez le chargement instantané de l'objet associé pour les performances -> <paramètre name = "LazylokingEnabled" value = "true" /> <! - Définissez le formulaire de chargement de l'objet associé. Voici un champ de charge à la demande (le champ de charge est spécifié par SQL). Tous les champs de la table associée ne seront pas chargés pour améliorer les performances-> <setting name = "AggressIlazAzoLing" value = "false" /> <! - Pour les requêtes SQL inconnues, les différents ensembles de résultats peuvent être renvoyés pour atteindre un effet commun -> <paramètre Name = "MultiplereSultSetsEnabled" Value = "True" /> <! - Laisser utiliser des chroniqueurs au lieu des noms de colonne Value = "true" /> <! - Autoriser l'utilisation de valeurs de clé primaire personnalisées (telles que le codage UUID 32 bits généré par le programme comme valeurs de clé), et la stratégie de génération PK de la table de données sera remplacée -> <paramètre name = "useGeneratedKeys" Value = "True" /> <! <! - Cache SQL pour les opérations de mise à jour par lots pour améliorer les performances -> <paramètre name = "defaultExecutOrType" value = "Batch" /> <! - Timeout si la base de données n'a pas répondu pendant plus de 25 000 secondes -> <paramètre name = "DefaultStationTimeout" value = "25" /> <paramètre name = "LazyloadTriggerThods" value = </ Settings> <Cypealias> <! - Alias pour l'objet utilisateur personnalisé -> <! - <typealias type = "com.krry.mybatis.sysmanage.entity.user" alias = "user" /> -> <! - Définition de lot -> <package name = "com.krry.entity" /> </pactalees> </ configuration>
Springmvc.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/util" xmlns: mvc = "http://www.springframeworkwork.org/schema/mcr" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xschemma/contex http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <! FormattingConversionsViceFactoryBean -> <MVC: Annotation-Driven> <MVC: Message-Convergers Register-DefaultS = "True"> <Ean> <propriété Name = "SupportDediaTypes"> <Sist> <Value> TEXT / PLAIN; CARSET = UTF-8 </ Value> <Value> <an bean /> <an bean /> <an bean> <an bean> <propriété name = "prefixjson" value = "false" /> <propriété name = "ObjectMapper"> <ean> <! - Gérer le type de date dans la réponse -> <propriété name = "dateForat"> <anEn> <Constructor-arg type = "java.lang.string" value = "yyyym-mm-dd hh: mm: ss" </ / propriété> <! - Non affiché lorsque le champ est nul -> <propriété name = "serializationinclusion"> <valeur type = "com.fasterxml.jackson.annotation.jsoninclude.include"> non_null </value> </ propriété> </ank <value> application / x-www-form-urlencoded; charset = utf-8 </value> </sist> </ propriété> </ bean> </mvc: Message-Converters> </mvc: annotation-driven> <! - scan package -> < Les fichiers doivent être définis, car dans la configuration de SpringMVC, toutes les demandes (.do, addUser, JS / Image / CSS) dans ce projet seront analysées par SpringMVC, et tous les fichiers de ressources statiques doivent être filtrés et publiés -> <! - Choisissez l'une des ressources statiques suivantes -> <! mapping = "/ ressource / **" location = "/ ressource /" /> <! - Afficher le rendu jsp / freemaker / velocity -> <ean> <! - Créez un chemin d'accès à la page de stockage -> <propriété name = "préfixe" value = "/ web-inf / pages /"> </ propriété> <! - File Sheed> <propriété name = "Suffix" value = ".
jdbc.properties et log4j.properties n'ont pas besoin d'être affichés, ils sont presque les mêmes
web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version = "2.5"> <splay-name> maven_pagehepler </ display-name> <ven wencel-file-list> <leen wemel-file> index / index </ bienvenue-file> </venke-file-list> <atext-param> <param-name> contextConfigLocation </ param-name> <ouciner-class> org.springframework.web.context.contextLoaderListener </ auteur-class> </diner> <disener> <auditeur-class> org.springframework.web.util.introspectorcleanupListener </ auteur-classe> </ auditeur> <filter> <handigon> <Filter-Class> org.springframework.web.filter.characterencodingfilter </filter-class> <Init-Param> <Amam-Name> Encoding </ param-name> <param-value> utf-8 </ param-value> <Url-Pattern> / * </ url-Pattern> </ Filter-Mapping> <Serplet> <Serplet-Name> Maven_PageHepler </ Servlet-Name> <Servlet-Class> Org.SpringFramework.Web.Servlet.DispatcherServlet </ Servlet-Class> <Init-Param> <Amar-Name> <Am param-Value> CLASSPATH: Springmvc.xml </ Param-Value> </Init-Param> </ Servlet> <Serplet-Mapping> <Serplet-Name> MAVEN_PAGEHEPLER </ Servlet-Name> <Url-Pattern> / Index / Index </ URL-Pattern> </ Servlet-Mapping> <rol-Mapping> <Servlet-name> maven_pagehepler </vrlet-name> <url-potern> / </url-stern> </ serplet-mapping> </low-apprent>
Classe d'entité: country.java
package com.krry.entity; public class Country {/ ** * Clé primaire * / ID entier privé; / ** * Nom * / Private String CountryName; / ** * Code * / Private String countrycode; Public Country (ID entier, String CountryName, String countrycode) {this.id = id; this.CountryName = countryname; this.CountryCode = countrycode; } / ** * Obtenez la clé principale * * @return ID - Clé primaire * / public Integer getID () {return id; } / ** * Définir la clé primaire * * @param id clé primaire * / public void setid (INGER ID) {this.id = id; } / ** * get name * * @return countryname - name * / public String getCountryName () {return countryname; } / ** * Set Name * * @param Countryname Nom * / public void SetCountryName (String CountryName) {this.CountryName = countryname; } / ** * Get Code * * @return countrycode - code * / public String getCountryCode () {return countrycode; } / ** * Set Code * * @param CountryCode Code * / public void setCountryCode (String countrycode) {this.CountryCode = countrycode; }}Params.java
package com.krry.entity; / ** * * params * @author krry * @version 1.0.0 * * / public class params {private Integer pagesize = 10; entier privé Pageno = 0; public entier getpageno () {return pageno; } public void setpageno (entier pageno) {this.pageno = pageno; } public Integer getPageSize () {return pagesize; } public void setPageSize (entier pagesize) {this.pagesize = pagesize; }} Couche de persistance: countrymapper.java
package com.krry.mapper; import java.util.list; import com.krry.entity.country; / ** * * mappeur: opération de données * @author krry * @version 1.0.0 * * / interface publique countrymapper {/ ** * query * @param params * @rernr * / public list <Country> FindS (); / ** * Calculer * com.krry.dao.admin * Nom de la méthode: countblogs * @author krry * @param params * @return int * @Exception * @Since 1.0.0 * / public long counts (); } Countrymapper.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis.mapper.coupper"> <Make namespace = "com.krry.mapper.coupper"> <maître <! - Pagination Query -> <select id = "finds" resultType = "country"> select id, countryname, countrycode from country </lect> <! - requête le nombre de blogs -> <select id = "counts" resultType = "Long"> select count (*) from country </capte> </ mapper>
Interface de couche commerciale:
package com.krry.service; import java.util.hashmap; import java.util.list; import javax.servlet.http.httpservletRequest; import org.apache.ibatis.annotations.param; import com.github.pagehelper.pageinfo; import com.krry.entity.countrry; com.krry.entity.params; / ** * Couche de service: gérer la logique métier (implémentée en impl) * @author asusaad * * / interface publique iCounTryService {/ ** * Query de pagination pour tous les blogs * @Param Params Paramètres de pagination Pageno (numéro de page), pagesize (nombre de questions finse (params params); / ** * Calculez le nombre de blogs * @param params * @return * / public long Counts (); } Classe de mise en œuvre de la couche d'entreprise
package com.krry.service.impl; import java.util.hashmap; import java.util.list; import org.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype.mervice; import org.springframework.web.sserver com.github.pagehelper.pagehelper; import com.github.pagehelper.pageinfo; import com.krry.entity.country; import com.krry.entity.params; import com.krry.mapper.countrymapper; importer com.krry.svice.icontryservice; / ** * implémentation interface * @aruner ASUSAAD * * / @ ServicePublic Class CountryService implémente iCountryService {@Autowired Private CountryMapper CountryMapper; / ** * Query * / public PageInfo <Amplice> finds (params params) {// query int pageno = params.getpageno (); int pageSize = params.getPageSize (); PageHelper.StartPage (Pageno, PageSize); List <country> blogs = countrymapper.finds (); // Enveloppez le résultat avec PageInfo PageInfo <Country> PageInfo = new PageInfo <Country> (blogs); Retour pageInfo; } / ** * Calcul * @param params * @return * / public long Counts () {long couts = countrymapper.Counts (); Retour Couts; }} Couche de contrôle: KrryController.java
package com.krry.controller; import java.util.arraylist; import java.util.hashmap; import java.util.list; import org.junit.test; import org.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype.Controller; import; org.springframework.web.bind.annotation.requestmapping; Import org.springframework.web.bind.annotation.responsebody; import org.springframework.web.servlet.modelandView; import com.github.pagehelper.pageinfo; import com.krry.entity.country; import com.krry.entity.params; importer com.krry.service.icocom. ** * KrryController * Couche de contrôleur, transféré en tant que demande * @author asusaad * * / @ contrôleur // signifie qu'il s'agit d'un motif multi-cas, et la couche Web retournée par chaque utilisateur est différent @RequestMapping ("/ index") public Class KrryCroller {@aUstowing ("/ INDEX") Gublic Class KrryCroller {@aUSTOWAPPOR ICountryService CountryService; / ** * Page d'accueil et requête de pagination * @return * / @requestmapping ("/ index") public ModelAndView index (params params) {ModelAndView ModelAndView = new ModelAndView (); // d'abord la première page, requête 10 params.setpageno (1); Params.SetPageSize (10); PageInfo <Country> PageInfo = CountryService.finds (params); List <country> clist = pageinfo.getList (); // Quantité de requête longues Couts = CountryService.Counts (); ModelAndView.AddObject ("Clist", Clist); ModelAndView.AddObject ("COUTS", COUTS); ModelAndView.SetViewName ("index"); return ModelAndView; } / ** * Query de pagination pour la demande ajax * @param params * @return * / @ResponseBody @RequestMapping ("/ LoadData") public hashmap <string, objet> loadData (params params) {hashmap <string, objet> map = new hashmap <string, objet> (); PageInfo <Country> PageInfo = CountryService.finds (params); List <country> clist = pageinfo.getList (); Map.put ("Clist", Clist); carte de retour; } //}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.