Requête de pagination MyBatis-Plus
Informations sur la table de données MySQL-User
identifiant | Nom | âge | 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);
}
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.