Maison  >  Article  >  Java  >  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
PHPzavant
2023-05-07 08:04:16685parcourir

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}

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>

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>
List<User> getUserInfo1(Map<String,Object> map);
@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();
}

Ex : résultats d'exécution :

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

Quand 0,10 est passé dans :

Quelles sont les méthodes d’implé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();
}
List<User> getUserInfoRowBounds(RowBounds rowBounds);
<select id="getUserInfoRowBounds" resultType="dayu">
   select * from user
</select>

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

Quelles sont les méthodes d’implé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>

Code de la couche métier :

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>

Résultat de l'exécution :

Quelles sont les méthodes d’implé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();
}

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();
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer