IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MyBatis-Plus 分页查询 -> 正文阅读

[大数据]MyBatis-Plus 分页查询

一?点睛

MyBatis Plus 自带分页插件,只要简单的配置即可实现分页功能。

分页查询的开发流程见下图。

二?实战

1?数据库中的数据

mysql> select * from user;
+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+
| id                  | NAME         | age  | email              | create_time         | update_time         | version |
+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+
|                   0 | auto         |   20 | 1243@qq.com        | NULL                | NULL                |    NULL |
|                   1 | Jone         |   18 | test1@baomidou.com | NULL                | NULL                |    NULL |
|                   2 | Jack         |   20 | test2@baomidou.com | NULL                | NULL                |    NULL |
|                   3 | Tom          |   28 | test3@baomidou.com | NULL                | NULL                |    NULL |
|                   4 | Sandy        |   21 | test4@baomidou.com | NULL                | NULL                |    NULL |
|                   5 | Billie       |   24 | test5@baomidou.com | NULL                | NULL                |    NULL |
| 1443158688033337346 | lucymaryupup |   20 | 1243@qq.com        | NULL                | 2021-09-30 08:51:12 |    NULL |
| 1443378040145903617 | ASSIGN_ID    |   20 | 1243@qq.com        | 2021-09-30 08:51:56 | 2021-09-30 08:51:56 |    NULL |
| 1444192337759502338 | zhangsan     |   20 | 1243@qq.com        | 2021-10-02 14:47:40 | 2021-10-02 14:55:10 |       2 |
+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+
9 rows in set (0.00 sec)

?2?配置分页插件

@Configuration
@MapperScan("com.cakin.demomptest.mapper")
public class MpConfig {
    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

3?测试 selectPage 分页

// 分页查询
@Test
public void testSelectPage() {
    Page<User> page = new Page(1, 3);
    Page<User> userPage = userMapper.selectPage(page, null);
    // 返回对象得到分页所有数据
    long pages = userPage.getPages(); // 总页数
    long current = userPage.getCurrent(); // 当前页
    List<User> records = userPage.getRecords(); // 查询数据集合
    long total = userPage.getTotal(); // 总记录数
    boolean hasNext = userPage.hasNext();  // 下一页
    boolean hasPrevious = userPage.hasPrevious(); // 上一页

    System.out.println(pages);
    System.out.println(current);
    System.out.println(records);
    System.out.println(total);
    System.out.println(hasNext);
    System.out.println(hasPrevious);
}

4?查询结果

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7f829c76] was not registered for synchronization because synchronization is not active
2021-10-02 15:55:10.203  INFO 1756 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-10-02 15:55:12.209  INFO 1756 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@668929853 wrapping com.mysql.cj.jdbc.ConnectionImpl@c35af2a] will not be managed by Spring
JsqlParserCountOptimize sql=SELECT  id,name,age,email,create_time,update_time,version  FROM user
==>  Preparing: SELECT COUNT(1) FROM user
==> Parameters:
<==    Columns: COUNT(1)
<==        Row: 9
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version FROM user LIMIT ?,?
==> Parameters: 0(Long), 3(Long)
<==    Columns: id, name, age, email, create_time, update_time, version
<==        Row: 0, auto, 20, 1243@qq.com, null, null, null
<==        Row: 1, Jone, 18, test1@baomidou.com, null, null, null
<==        Row: 2, Jack, 20, test2@baomidou.com, null, null, null
<==      Total: 3
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7f829c76]
3
1
[User(id=0, name=auto, age=20, email=1243@qq.com, createTime=null, updateTime=null, version=null), User(id=1, name=Jone, age=18, email=test1@baomidou.com, createTime=null, updateTime=null, version=null), User(id=2, name=Jack, age=20, email=test2@baomidou.com, createTime=null, updateTime=null, version=null)]
9
true
false

5?测试 selectMapsPage 分页

当指定了特定的查询列时,希望分页结果列表只返回被查询的列,而不是很多 null 值

// 分页查询
@Test
public void testSelectMapsPage() {
    // Page 不需要泛型
    Page<Map<String, Object>> page = new Page<>(1, 5);
    Page<Map<String, Object>> pageParam = userMapper.selectMapsPage(page, null);
    List<Map<String, Object>> records = pageParam.getRecords();
    records.forEach(System.out::println);
    System.out.println(pageParam.getCurrent());
    System.out.println(pageParam.getPages());
    System.out.println(pageParam.getSize());
    System.out.println(pageParam.getTotal());
    System.out.println(pageParam.hasNext());
    System.out.println(pageParam.hasPrevious());
}

测试 selectMapsPage 分页:结果集是 Map

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6ae7deac] was not registered for synchronization because synchronization is not active
2021-10-02 15:59:14.475  INFO 20468 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-10-02 15:59:16.276  INFO 20468 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@1018742990 wrapping com.mysql.cj.jdbc.ConnectionImpl@1fde0371] will not be managed by Spring
JsqlParserCountOptimize sql=SELECT  id,name,age,email,create_time,update_time,version  FROM user
==>  Preparing: SELECT COUNT(1) FROM user
==> Parameters:
<==    Columns: COUNT(1)
<==        Row: 9
==>  Preparing: SELECT id,name,age,email,create_time,update_time,version FROM user LIMIT ?,?
==> Parameters: 0(Long), 5(Long)
<==    Columns: id, name, age, email, create_time, update_time, version
<==        Row: 0, auto, 20, 1243@qq.com, null, null, null
<==        Row: 1, Jone, 18, test1@baomidou.com, null, null, null
<==        Row: 2, Jack, 20, test2@baomidou.com, null, null, null
<==        Row: 3, Tom, 28, test3@baomidou.com, null, null, null
<==        Row: 4, Sandy, 21, test4@baomidou.com, null, null, null
<==      Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6ae7deac]
{name=auto, id=0, age=20, email=1243@qq.com}
{name=Jone, id=1, age=18, email=test1@baomidou.com}
{name=Jack, id=2, age=20, email=test2@baomidou.com}
{name=Tom, id=3, age=28, email=test3@baomidou.com}
{name=Sandy, id=4, age=21, email=test4@baomidou.com}
1
2
5
9
true
false

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:09:36  更:2021-10-03 17:11:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:11:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码