分页查询

1,介绍

1.1.作用

浪费服务器带宽
防止数据过多一下子全部显示

1.2.数据

数据、总数据数、当前页、当前条数、上页、下页、总页、首页

1.3.分类

假分页:
一次性查询所有存入内存 翻页从内存中获取数据 优点: 实现简单,性能高 缺点:内容溢出
真分页:
每次翻页从数据库中查询数据 优点: 不容造成内存溢出 缺点: 实现复杂 性能相对低

2.实现

数据和总数据数通过当前页条数查询数据库得知
一开始没有携带分页查询的参数需要默认{ 当前页 && 条数 }
表现层需要接收用户传递过来的数据
因为Mybatis只能接收一个参数:需要将用户的数据封装成对象;


思路

访问流程:
表现层:     
           接收请求参数 当前页currentPage和每页条数pageSize
	   创建QueryObject对象qo封装分页查询参数
	   通过调用业务对象.分页查询方法(qo)获取结果集pageRusult
	   请求对象.setAttribute("pageRusult",结果集)
	   转发到JSP;
业务层: 
	   结果集封装页面显示的数据:
	   currentPage,pageSize,totalCount,List<T>data,totalPage,prevPage,nextPage
	   QueryObject封装的分页查询参数:
	   currentPage,pageSize,getStart()//获取分页数据开始的索引
	   
	   创建结果集对象 pageRusult
	   调用query方法接收QueryObject对象qo封装的分页查询参数
	   获取totalCount通过持久层查询产品数量的方法
	   获取当前页数据的集合list通过持久层查询当前页的数据
	   根据接收qo对象封装的 currentPage 和 pageSize
	   计算总页数据 totalPage ,上一页 prevPage,下一页 nextPage
	   把以上获取的数据封装到 pageRusult 对象中 返回结果集给表现层 
	   
持久层: 
           调用int selectForCount(QueryObject对象) 
	   通过数据库sql语句 select count(*) from 表名 获取表的数据总条数totalCount
	   
	   调用List<实体类> selectForList(QueryObject对象) 获取封装的当前页currentPage和每页条数pageSize数据
	   通过QueryObject类封装的 getStart() 方法获取每页开始的索引 start 为 (currentPage - 1) * pageSize
	   通过数据库sql语句 select * from 表名 limit  #{start} , #{pageSize} 获取每页的数据


返回课程体系

posted @ 2021-05-05 10:57  LinkYup  阅读(392)  评论(0编辑  收藏  举报