Maison > Java > javaDidacticiel > Quelles sont les méthodes d'implémentation de pagination de MyBatis en Java ?

Quelles sont les méthodes d'implémentation de pagination de MyBatis en Java ?

PHPz
Libérer: 2023-05-07 08:04:16
avant
756 Les gens l'ont consulté

Avant-propos

La pagination est un obstacle que nous ne pouvons pas contourner en développement ! Lorsque la quantité de vos données est importante, il est irréaliste de vérifier toutes les données en même temps, c'est pourquoi nous interrogeons généralement par pages, ce qui réduit la pression sur le serveur et améliore la vitesse et l'efficacité ! Cela réduit également la pression sur le rendu front-end !

Remarque : Étant donné que l'entier maximum autorisé par Java est 2147483647, l'entier maximum que cette limite peut utiliser est également 2147483647. La récupération d'une grande quantité de données en même temps peut provoquer un débordement de mémoire, utilisez-la donc avec prudence dans les requêtes Big Data. situation !

1. Limiter la pagination

Grammaire :

limit ${startPos},${pageSize}
Copier après la connexion

Dans les projets réels, nous ajoutons généralement un jugement nul, comme suit :

<if test="startPos!=null and pageSize!=null">
    limit ${startPos},${pageSize}
</if>
Copier après la connexion

Code de couche métier

<select id="getUserInfo1" parameterType="map" resultType="dayu">
    select * from user
    <if test="startPos!=null and pageSize!=null">
        limit ${startPos},${pageSize}
    </if>
</select>
Copier après la connexion
List<User> getUserInfo1(Map<String,Object> map);
Copier après la connexion
@Test
 public void selectUser() {
     SqlSession session = MybatisUtils.getSession();
     UserMapper mapper = session.getMapper(UserMapper.class);
     //这里塞值
      Map<String,Object> parms = new HashMap<>();
      parms.put("startPos","0");
      parms.put("pageSize","5");
     List<User> users = mapper.getUserInfo1(parms);
     for (User map: users){
         System.out.println(map);
    }
     session.close();
}
Copier après la connexion

Ex : résultats d'exécution :

Quelles sont les méthodes dimplémentation de pagination de MyBatis en Java ?

Quand 0,10 est passé dans :

Quelles sont les méthodes dimplémentation de pagination de MyBatis en Java ?

Résumé :

  • limite 0,10;

  • 0 signifie à partir de la 0ème donnée

  • 10 Cela signifie vérifier 10 éléments de données

  • Lorsque vous atteindrez la deuxième page, ce sera la limite 10,10 ;

Deuxièmement, la pagination RowBounds (non recommandée)

RowBounds nous aide à omettre le contenu limite, il nous suffit de ajoutez-le dans l'entreprise Suivez simplement la couche de pagination ! Pas besoin de transmettre des données spécifiées !

Cependant, cela appartient à la pagination logique, c'est-à-dire que la requête SQL interroge en fait toutes les données, ce qui ne fait que paginer au niveau de la couche métier, elle prend plus de mémoire et les données ne sont pas mises à jour à temps, et il peut y en avoir. un certain décalage ! Non recommandé !

L'objet RowBounds a 2 propriétés, offset et limit.

  • offset :Numéro de ligne de départ

  • limite :Le nombre de lignes de données requises

Par conséquent, les données supprimées sont : à partir de la ligne offset + 1, prenez la ligne limite

Code de la couche métier :

@Test
public void selectUserRowBounds() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    // List<User> users = session.selectList("com.dy.mapper.UserMapper.getUserInfoRowBounds",null,new RowBounds(0, 5));
    List<User> users = mapper.getUserInfoRowBounds(new RowBounds(0,5));
    for (User map: users){
        System.out.println(map);
    }
    session.close();
}
Copier après la connexion
List<User> getUserInfoRowBounds(RowBounds rowBounds);
Copier après la connexion
<select id="getUserInfoRowBounds" resultType="dayu">
   select * from user
</select>
Copier après la connexion

Résultats de la vue d'exécution :

Quelles sont les méthodes dimplémentation de pagination de MyBatis en Java ?

3. Plug-in de pagination Mybatis_PageHelper

Présentation du package jar

r : rreee

Configurer le fichier de configuration principal de MyBatis :

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.1.7</version>
</dependency>
Copier après la connexion

Code de la couche métier :

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>
Copier après la connexion

Résultat de l'exécution :

Quelles sont les méthodes dimplémentation de pagination de MyBatis en Java ?

Résumé :

PageHelper est toujours très utile, et c'est aussi une pagination physique !

En fait, on utilise généralement davantage le deuxième type : Appel de méthode d'interface Mapper

@Test
public void selectUserPageHelper() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第二种,Mapper接口方式的调用,推荐这种使用方式。
    PageHelper.startPage(1, 3);
    List<User> list = mapper.getUserInfo();
    //用PageInfo将包装起来
    PageInfo page = new PageInfo(list);
    for (User map: list){
        System.out.println(map);
    }
    System.out.println("page:---"+page);
    session.close();
}
Copier après la connexion
Copier après la connexion

Extension :

@Test
public void selectUserPageHelper() {
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第二种,Mapper接口方式的调用,推荐这种使用方式。
    PageHelper.startPage(1, 3);
    List<User> list = mapper.getUserInfo();
    //用PageInfo将包装起来
    PageInfo page = new PageInfo(list);
    for (User map: list){
        System.out.println(map);
    }
    System.out.println("page:---"+page);
    session.close();
}
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal