Requête de pagination MyBatis-Plus

Requête de pagination MyBatis-Plus

Informations sur la table de données MySQL-User

identifiant Nom âge e-mail créer du temps temps de mise à jour
1 Notre 18 [email protected] 2022-02-22 08:56:15 2022-02-01 08:56:20
2 Jack 20 [email protected] 2022-02-16 09:00:44 2022-02-17 09:00:48
3 À M 28 [email protected] 2022-02-10 09:00:52 2022-02-19 09:00:57
4 Sablonneux 21 [email protected] 2022-02-14 09:01:02 2022-02-21 09:01:06
5 billie 24 [email protected] 2022-02-09 09:01:13 2022-02-18 09:01:19
6 YCloud 22 [email protected] 2022-02-22 09:02:19 2022-02-22 09:02:23
7 FormationL 23 [email protected] 2022-02-01 09:02:57 2022-02-10 09:03:01
8 Démo 22 [email protected] 2022-02-04 09:03:24 2022-02-14 09:03:28
9 Geoffrey 30 [email protected] 2022-01-12 09:04:30 2022-02-10 09:04:34
dix George 27 [email protected] 2022-02-09 09:05:09 2022-02-12 09:05:12
11 William 42 [email protected] 2022-02-22 09:05:45 2022-02-22 09:05:47
12 Glen 30 [email protected] 2022-02-08 09:07:03 2022-02-28 09:07:06

1. Fonctionnement de la requête MyBatis-Plus

1. Interroger les enregistrements par clé primaire d'id (unicité) :T selectById(Serializable id)

//测试查询
@Test
public void testSelectById(){
    
    
    //通过id=1L主键查询记录(唯一性)
    User user = userMapper.selectById(1L);
    System.out.println(user);
}

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leech, il est recommandé d'enregistrer l'image et de la télécharger directement (img-RCz1AkjU-1645504787904) (C:\Users\17209\AppData\Roaming\Typora\typora -images-utilisateur\image-20220222085721085.png)]

2. Requêtes par lots via la collecte d'identifiants :List<T> selectBatchIds(Collection idList)

//测试批量查询
@Test
public void testSelectByBatchId(){
    
    
    List<Integer> ids = Arrays.asList(1, 2, 3);
    //通过id集合查询记录
    List<User> users = userMapper.selectBatchIds(ids);
    for (User user : users) {
    
    
        System.out.println(user);
    }
}

3. Interrogez l'une des conditions (à l'aide de l'opération de carte) :selectByMap()

//按条件查询之一:使用map操作
@Test
public void testSelectByMap(){
    
    
    HashMap<String, Object> map = new HashMap<>();
    //自定义要查询的条件
    map.put("name", "YCloud");
    map.put("age", 22);
    //返回值是一个列表,因为可能返回多条记录
    List<User> users = userMapper.selectByMap(map);
    for (User user : users) {
    
    
        System.out.println(user);
    }
}

2. Requête de pagination (comment utiliser ?)

1. Configurer le plugin de pagination

@Configuration
public class MyBatisPlusConfig {
    
    
    @Bean
    public PaginationInterceptor paginationInterceptor() {
    
    
        return new PaginationInterceptor();
    }
}

Dans la version haute de SpringBoot, cette méthode de configuration est obsolète, donc une autre façon d'écrire MybatisPlusInterceptor est utilisée , comme suit :

@Configuration
public class MyBatisPlusConfig {
    
    
    //分页插件——新的分页插件,旧版本PaginationInterceptor失效了
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
    
    
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

2. Utilisez directement l'objet Page

méthode décris
getRecords() Interroger les enregistrements de données de la page en cours, le type de retour est une liste
getTotal() nombre total d'enregistrements vérifiés
getSize() taille de la page
getPages() pages totales
hasPrevious() Si la page actuelle a une page précédente
hasNext() Si la page actuelle a une page suivante
getCurrent() Renvoie le numéro de la page actuelle
//测试分页查询
@Test
public void testPage(){
    
    
    //参数一:当前页,参数二:页面大小
    //使用了分页插件之后,所有的分页操作也变得简单
    Page<User> page = new Page<>(1, 5);
    userMapper.selectPage(page, null);

    List<User> records = page.getRecords();
    for (User user : records) {
    
    
        System.out.println(user);
    }
    System.out.println("记录总数:" + page.getTotal());
    System.out.println("每一页的大小:" + page.getSize());
    System.out.println("是否有上页:" + page.hasPrevious());
    System.out.println("当前页:" + page.getCurrent());
    System.out.println("总页数:" + page.getPages());
    System.out.println("是否有下页:" + page.hasNext());
}

Journal d'impression de la console :

==>  Preparing: SELECT COUNT(*) FROM user
==> Parameters: 
<==    Columns: COUNT(*)
<==        Row: 12
<==      Total: 1
==>  Preparing: SELECT id,name,age,email,create_time,update_time FROM user LIMIT ?
==> Parameters: 5(Long)
<==    Columns: id, name, age, email, create_time, update_time
<==        Row: 1, Jone, 18, [email protected], 2022-02-22 08:56:15, 2022-02-01 08:56:20
<==        Row: 2, Jack, 20, [email protected], 2022-02-16 09:00:44, 2022-02-17 09:00:48
<==        Row: 3, Tom, 28, [email protected], 2022-02-10 09:00:52, 2022-02-19 09:00:57
<==        Row: 4, Sandy, 21, [email protected], 2022-02-14 09:01:02, 2022-02-21 09:01:06
<==        Row: 5, Billie, 24, [email protected], 2022-02-09 09:01:13, 2022-02-18 09:01:19
<==      Total: 5

On peut voir que la couche inférieure du plug-in de pagination effectue également la pagination via la requête de limite de base de données.

Je suppose que tu aimes

Origine blog.csdn.net/qq_41775769/article/details/123065592
conseillé
Classement