首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢迎补充)的问题。
<>强分页查询也分为真分页和假分页:强>
真分页:基于数据库查出的数据直接分页显示,优点是改变数据库数据不会影响查询结果,缺点是速度稍慢。
假分页:将所有数据查询出的数据,封装到列表集合缓存中,表现层方法调用执行。由于将数据封装为集合放入了内存中,所以速度较快,但缺点是数据库改变后,会出现不匹配的情况。
两种分页各有优缺点,小伙伴们视具体情况使用吧。
<强>下面要介绍的就是真分页的方法:强>
<强> 1,建立JavaBean 强>
进口java.io.Serializable;/* * *用户实体类 * @author * */公共类出发实现Serializable { *//* *用户ID 私人int id;/* *用户名字*/私人字符串名称; 公共出发(){ } 公共出发(int id字符串名称){ 这一点。id=id; this.name=名称; } 公共int getId () { 返回id; } 公共空间setId (int id) { 这一点。id=id; } 公共字符串getName () { 返回名称; } 公共空间setName(字符串名称){ this.name=名称; } @Override 公共字符串toString () { 返回“出发(id=" +身份证+ " name=" +名字+ "]”; } } >之前2,用于展示分页数据的JavaBean
/* * *用于展示分页数据的JavaBean对象 * @author * */进口并不知道; 公开课PagenationBean {/* *当前页数*/私人整数currPage;/* *总页数*/私人整数totalPage;/* *用于展示的表数据*/私人ListdataList; 公共整数getCurrPage () { 返回currPage; } 公共空间setCurrPage(整数currPage) { 这一点。currPage=currPage; } 公共整数getTotalPage () { 返回totalPage; } 公共空间setTotalPage(整数totalPage) { 这一点。totalPage=totalPage; } 公共List getDataList () { 返回dataList; } 公共空间setDataList (List dataList) { 这一点。dataList=dataList; } } >之前 3, dao层实现类
@Override 公共int getTotalCount(){//计算总的数据条数 this.setConnection (); int totalCount=0; 尝试{ ps=con.prepareStatement (“select count(*)从t_user”); rs=ps.executeQuery (); 如果(rs.next ()) { totalCount=rs.getInt (1); } }捕捉(异常e) { e.printStackTrace (); 最后}{ this.closeConnection (); } 返回totalCount; } @Override 公共ListgetUserListByStartIndex (int StartIndex){//根据传入的限制第一位参数得到该参数后面的10条数据 List userList=new ArrayList<在(); 出发出发=零; this.setConnection (); int totalCount=0; 尝试{ ps=con.prepareStatement (“select * from t_user限制& # 63;,10”); StartIndex ps.setInt(1日); rs=ps.executeQuery (); 而(rs.next ()) { 出发=new StuBean (); userBean.setId (rs.getInt (" id ")); userBean.setName (rs.getString("名称")); stuList.add(出发); } }捕捉(异常e) { e.printStackTrace (); 最后}{ this.closeConnection (); } 返回userList; } 4,服务层实现类
私人IUserDao isd=new UserDaoImpl (); @Override 公共int getTotalPage () {//得到数据据条数 int totalCount=isd.getTotalCount ();//计算总页数公式 int totalPage=(totalCount + 10 1)/10; 返回totalPage; } @Override 公共ListgetUserListByCurrPage (int currPage) {//通过当前页计算起始索引 int StartIndex=(currPage - 1) * 10; List userList=isd.getStuListByStartIndex (StartIndex); 返回userList; } >之前 5,将查询出的数据放入页面展示就OK了。
以上方法中,分页显示的是10条数据,计算分析如下:
数据总条数:totalCount
每页显示条数:页大小
总页数:totalPage
起始索引StartIndex
MySql实现翻页查询功能