Mybatis分页功能

简介: Mybatis分页功能

分页插件



添加依赖


<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>


配置插件


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


分页插件的使用


几种须知的条件


limit index, pageSize

index : 当前页的起始索引

pageSize : 每页显示的数据条数

pageNum : 当前页的页码

count :总记录数

totalPage :总页数 totalPage = count / pageSize

//如果从记录数 / 每页显示的数据 结果无法整除
//这种情况就是还有几条多余的数据无法显示,需要我们自己再添加一页进行显示
if(count % pagesize != 0){
    totalPage += 1;
}


举例说明:

pageSize  = 4 ,pageNum = 1, index= 0   limit 0 ,4
 pageSize  = 4 ,pageNum = 3, index= 8   limit 8 ,4
 pageSize  = 4 ,pageNum = 6, index= 20   limit 20 ,4
//每页显示4条数据 ,如果当前页为1 , 那么数据的索引就是从0开始 ,limit后面的数据就是从0 开始,页面显示数据为4条
//每页显示4条数据 ,如果当前页为3 , 那么数据的索引就是从前两页显示完后的数据(需要显示的数据就是从9 - 12),也就是从2*4=8开始 ,limit后面的数据就是从8开始,页面显示数据为4条
//每页显示4条数据 ,如果当前页为6 , 那么数据的索引就是从前两页显示完后的数据(需要显示的数据就是从21 - 24),也就是从5*4=20开始 ,limit后面的数据就是从20开始,页面显示数据为4条


list.forEach(System.out::println);列表查询


PageInfo中的属性


public class PageInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    private int pageNum;    //当前页的页码
    private int pageSize; //每页显示的数据
    private int size;  //当前页显示的真实条数
    private int startRow; //当前页从第几行开始 
    private int endRow;  //当前页从而几行结束
    private long total;  //总共有多少条数据
    private int pages;  //总共页数
    private List<T> list; //存储的数据
    private int prePage;  //上一页的页码
    private int nextPage; //下一页的页码
    private boolean isFirstPage;//是否为第一页
    private boolean isLastPage;///是否为最后一页
    private boolean hasPreviousPage;//是否有上一页
    private boolean hasNextPage;//是否有下一页
    private int navigatePages;//当前导航分页的页码数
    private int[] navigatepageNums;//导航分页的总页码
    private int navigateFirstPage;
    private int navigateLastPage;


后端


开启分页显示

@RequestMapping("/list/{pageNum}")
public String pageStart(@PathVariable("pageNum") Integer pageNum, Model model){
    PageInfo<employee> page = employeeService.Page(pageNum);
    List<employee> list = page.getList();
    model.addAttribute("list",list);
    model.addAttribute("page",page);
  return "list";
}

在service层中开启分页以及获取数据,然后将数据回显到controller层


@Override
public PageInfo<employee> Page(Integer pageNum) {
    //开启分页功能,每页显示8条数据
    PageHelper.startPage(pageNum,8);
    List<employee> list = EmpMapper.selectAll();
    for(employee li : list){
        dept dept = DeptMapper.selectByPrimaryKey(li.getDeptId());
        li.setDep(dept);
    }
    PageInfo<employee> pageInfo = new PageInfo<>(list,4);
    return pageInfo;
}


前端


<!--分页的相关功能-->
<div style="text-align: center" >
    <!--判断是否有前一页-->
    <span th:if="${page.hasPreviousPage}">
        <a class="btn btn-sm btn-primary"  th:href="@{/list/1}">首页</a>
        <a class="btn btn-sm btn-primary"  th:href="@{'/list/' + ${page.prePage}}">上一页</a>
    </span>
    <!--显示需要展示的页码范围 ,通过navigatepage 来进行设置范围-->
    <span th:each="num : ${page.navigatepageNums}">
        <a class="btn btn-sm btn-primary"  th:if="${page.pageNum==num}" th:href="@{'/list/'+${num}}" th:text="'['+${num}+']'" style="color:#d51313;"></a>
        <a class="btn btn-sm btn-primary"  th:if="${page.pageNum!=num}" th:href="@{'/list/'+${num}}" th:text="${num} "></a>
    </span>
    <!--判断是否有下一页数据-->
    <span th:if="${page.hasNextPage}">
        <a class="btn btn-sm btn-primary"  th:href="@{'/list/'+${page.nextPage}}">下一页</a>
        <a class="btn btn-sm btn-primary"  th:href="@{'/list/'+${page.pages}}">末页</a>
    </span>
</div>


通过超链接发送请求的参数,然后通过与controller请求映射进行匹配,从而将请求发送至后端来处理


目录
相关文章
|
4天前
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
1天前
|
供应链 前端开发 Java
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
该博客文章介绍了一个使用Mybatis、Layui、MVC和JSP技术栈开发的服装库存管理系统,包括注册登录、权限管理、用户和货号管理、库存管理等功能,并提供了源码下载链接。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
|
6天前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
5天前
|
Java 数据库 Spring
MyBatisPlus分页插件在SpringBoot中的使用
这篇文章介绍了如何在Spring Boot项目中配置和使用MyBatis-Plus的分页插件,包括创建配置类以注册分页拦截器,编写测试类来演示如何进行分页查询,并展示了测试结果和数据库表结构。
MyBatisPlus分页插件在SpringBoot中的使用
|
22天前
|
SQL 关系型数据库 Java
mybatis-分页
1. MyBatis RowBounds分页:先查询所有结果,再进行内存分页。 2. PageHelper插件:自动识别数据库类型并添加对应分页关键字,分两步执行:添加分页查询,然后查询总数。 3. SQL分页:直接在SQL中使用`LIMIT`或`ROWNUM`等进行分页。 4. 数组分页:DAO层查询所有数据,Service层通过`subList`方法实现分页。 5. 拦截器分页:自定义拦截器对特定方法进行拦截,并在SQL语句中添加分页参数。 6. 总结:逻辑分页适合小数据量,物理分页适合大数据量避免内存溢出。物理分页优于逻辑分页。
|
5天前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
19 0
|
5天前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
1月前
|
关系型数据库 MySQL 数据库
MybatisPlus添加数据数据库没有数据,数据消失,使用Navicate看不到数据,Navicate中Mysql的数据与idea的数据不一定同步,Navicate与idea的数据库同步,其实有分页
MybatisPlus添加数据数据库没有数据,数据消失,使用Navicate看不到数据,Navicate中Mysql的数据与idea的数据不一定同步,Navicate与idea的数据库同步,其实有分页
|
2月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
2月前
|
Java 数据库连接 mybatis
MyBatisPlus分页功能制作未完
MyBatisPlus分页功能制作未完