[Spring MVC 4] MyBatis 分页开发
创始人
2024-04-03 13:13:57
0

在做Web开发的时候,需要对查询结果进行分页查询,初学者会使用原生的sql查询方式,例如limit关键字,不过这种属于对数据库物理分页了,然而会造成数据库本身的压力,所以分页管理就诞生了。一般在Mybatis中使用的就是RowBounds,当然了也有PageHelper.

本章内容较为基础,建议可以和上一期的MyBatis开发进行联系学习。MyBatis详解

目录

  • RowBounds 分页
    • 概述
    • RowBounds分页使用
    • RowBounds 分页原理
  • 分页插件PageHelper

RowBounds 分页

概述

分页查询,就是将数据库查询的结果在有限的界面分好多页显示,分页是许多网站常用的功能,也是最基本的功能。分页查询可分为逻辑分页和物理分页。
逻辑分页:数据库返回全部数据,通过代码获取分页数据。一次性从数据库查询全部数据并存储到List集合,List集合有序,根据索引指定范围。
物理分页:使用数据库自身所带的分页机制。Mysql的limit机制进行分页,因为是对数据库实实在在数据分页条件查询。
而我们没有必要将属于数据库端的压力施加到应用端来,建议使用物理分页而不是逻辑分页

RowBounds分页使用

MyBatis提供可以进行逻辑分页的RowBounds类,通过传递对象,来进行数据库分页操作,任何select都可以使用。遗憾的是是对ResultSet结果集分页,也就是常所说的逻辑分页,用sql查询所有结果,然后根据从第几条取回。

在AyUserMapper.xml添加select查询:

 a.id as "id",a.name as "name",a.password as "password"

然后,在AyUserDao接口添加查询方法findAll,方法入参是RowBounds,注意service层我就不再书写。

 List findAll(RowBounds rowBounds);

进行测试会显示全部的信息,当然我们可以进行指定:

 public class AyUserDaoTest  extends BaseJunit4Test{@Resourceprivate AyUserDao ayUserDao;@Testpublic void testFindAll() {List userList = ayUserDao.findAll(new RowBounds(0,1));for(int i=0;iSystem.out.println(userList.get(i).getName());}}}

在这里插入图片描述
数据库的内容:,可以分页结果就是(0,1)内容。
在这里插入图片描述

RowBounds 分页原理

这里先展现一部分RowBounds的源码部分:

//构造函数
public RowBounds() {this.offset = NO_ROW_OFFSET;this.limit = NO_ROW_LIMIT;
}

offset表示从第几行开始读取,limit表示返回的记录数
接着我们来看一下DefaultSqlSession类的查询接口,部分源码如下:

 List selectList(String statement,Object parameter);
 List selectList(String statement,Object parameter,RowBounds row)

可见,查询接口是以RowBounds作为参数来进行分页的。

分页插件PageHelper

是一款开源免费的Mybatis的物理分页插件。可以方便实现物理分页。与RowBounds相比其查询更好。
首先添加依赖:

com.github.pagehelperpagehelper5.1.4

在applicationContext.xml配置文件添加PageHelper相关配置:

helperDialect=mysqlreasonable=true

在AyUserDaoTest进行开发测试用例:

@Testpublic void testPageHelper() {//(第几页,多少条数据)PageHelper.startPage(0,1);List list = ayUserDao.findAll();//用pageinfo对结果进行包装PageInfo pageInfo = new PageInfo(list);}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...