`
mmdev
  • 浏览: 12918765 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

分页实现原理及model层代码

 
阅读更多

分页怎么实现:
看到效果

1 当前页-1 当前页+1 最后一页 总页数
首页 上一页 下一页 末页
算法分析:------------------------------------------------
当前页:
int nowpage;
首页:
nowpage=1;
末页:
int countpage; 总页
nowpage=countpage;
上一页:
nowpage = nowpage-1;
if(nowpage<1){
nowpage=1;
}
下一页:
nowpage = nowpage+1;
if(nowpage>countpage){
nowpage=countpage;
}
-----------------------------------------------------
理解概念:
当前页 nowpage
总页数 countpage =======7页
每页显示的记录数 10条
当前页开始的记录数:(nowpage-1)*10+1;
1 1-10
2 11-20
3 21 30
4 31 40
5 41 50
总记录数:
countrecord =64记录
总页数==总记录数%每页显示的记录数==0?总记录数/每页显示的记录数:总记录数/每页显示的记录数+1;
------------------------------------------
表的操作:
总记录数:select count(*) from 表名;
每页显示3条记录: 声明 int pagesize=3;
总页数:总页数==总记录数%每页显示的记录数==0?总记录数/每页显示的记录数:总记录数/每页显示的记录数+1;
当前页的记录信息:
select * from 表名 limit (nowpage-1)*pagesize,pagesize;

package qi.dao;

import java.util.List;

import qi.domain.Admin;

public interface AdminDao {
List<Admin>findNowPageInfo(Integer nowpage);
Integer findCountRecord();
Integer findCountPage();

}


package qi.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import qi.domain.Admin;

public class AdminDaoImpl implements AdminDao {

private static Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
private static final String URL = "jdbc:mysql://localhost:3306/3g?user=root&password=bwosi1nea&useUnicode=true&characterEncoding=UTF8";

static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(URL);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static final Integer PAGESIZE=3;
private Integer countRecord;
private Integer countPage;
public List<Admin> findNowPageInfo(Integer nowpage) {
List<Admin> allentites = new ArrayList<Admin>();
String sql = "select id,name,pass,sex,age from admin limit ?,?";
try {
pstmt = conn.prepareStatement(sql);
int index=1;
pstmt.setInt(index++,(nowpage-1)*PAGESIZE);
pstmt.setInt(index++,PAGESIZE);
rs = pstmt.executeQuery();
while (rs.next()) {
Admin entity = new Admin();
entity.setId(rs.getInt("id"));
entity.setName(rs.getString("name"));
entity.setPass(rs.getString("pass"));
entity.setSex(rs.getString("sex"));
entity.setAge(rs.getInt("age"));

allentites.add(entity);
}
release(rs, pstmt);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return allentites;
}
public Integer findCountRecord() {
String sql="select count(*) from admin";
try {
pstmt = conn.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()){

this.countRecord = rs.getInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return this.countRecord;
}
private void release(ResultSet rs, PreparedStatement pstmt) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
public Integer findCountPage() {
findCountRecord();
this.countPage=this.countRecord%this.PAGESIZE==0?this.countRecord/this.PAGESIZE:this.countRecord/this.PAGESIZE+1;
return this.countPage;
}
}


package qi.domain;
public class Admin {

private Integer id;
private String name;
private String pass;
private String sex;
private Integer age;
public Admin() {
super();
// TODO Auto-generated constructor stub
}
public Admin(Integer id, String name, String pass, String sex, Integer age) {
super();
this.id = id;
this.name = name;
this.pass = pass;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "Admin [id=" + id + ", name=" + name + ", pass=" + pass
+ ", sex=" + sex + ", age=" + age + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}

}

package qi.junit;

import java.util.List;

import org.junit.Test;

import qi.domain.Admin;
import qi.service.AdminServiceImpl;


public class AdminTest {
private AdminServiceImpl aService = new AdminServiceImpl();

@Test
public void getCountRecrd(){
System.out.println(aService.findCountRecord());
}
@Test
public void getCountPage(){
System.out.println(aService.findCountPage());
}
@Test
public void NowPageInfo(){
List<Admin> admins = aService.findNowPageInfo(4);
for(Admin admin:admins){
System.out.println(admin.toString());
}
}
}


package qi.service;

import qi.dao.AdminDao;

public interface AdminService extends AdminDao{

}


package qi.service;

import java.util.List;

import qi.dao.AdminDao;
import qi.dao.AdminDaoImpl;
import qi.domain.Admin;

public class AdminServiceImpl implements AdminService{
private AdminDao aDao = new AdminDaoImpl();
public List<Admin> findNowPageInfo(Integer nowpage) {
return aDao.findNowPageInfo(nowpage);
}

public Integer findCountRecord() {
return aDao.findCountRecord();
}

public Integer findCountPage() {
return aDao.findCountPage();
}

}

分享到:
评论

相关推荐

    Laravel框架分页实现方法分析

    主要介绍了Laravel框架分页实现方法,结合实例形式分析了Laravel框架实现分页功能的核心代码及其相关原理,需要的朋友可以参考下

    asp分页方法

    因为主题方面的原因,关于数据库的连接,下文只给出代码和简要注释,而把重点放在如何利用Recordset对象(或控件)实现数据记录的分页显示方面。根据我的理解,分页显示的关键就在于对ADO的Recordset对象或DTC(设计...

    JavaWeb分页展示数据(含AJAX/JSTL/EL表达式等知识点)

    通过带着读者编写分页Web Project,使用MODEL1开发模式,并了解AJAX核心原理。在编码的过程中能理清数据的生命周期,明白在指定页面应做怎样的变换,尽量简化代码实现过程。

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 recv与recvfrom的区别及基于udp实现ntp服务 08 基于tcp实现远程执行命令 09 基于tcp实现远程执行命令测试结果 10 粘包现象 11 粘包解决方法 第31章 01 上节课复习 02 socketserver实现并发 03 socketserver模块...

    asp.net知识库

    运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中...

    亮剑.NET深入体验与实战精要2

    本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例代码及独家披露的商业系统,供读者参考学习。 本书适合于.NET初、中级开发人员参考...

    亮剑.NET深入体验与实战精要3

    本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例代码及独家披露的商业系统,供读者参考学习。 本书适合于.NET初、中级开发人员参考...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    javascript代码存在形式 javascript基本预览 javascript字符串操作以及跑马灯实例 javascript数组和字典以及for循环 javascript条件语句 javascript函数的定义 Dom直接选择器 Dom间接选择器 示例之模态对话框 示例之...

    2019年python自动化运维进阶篇20期视频教程-百度网盘下载视频

    │ 6 数据分页原理.mp4 │ 7 paginator与page对象.mp4 │ 8 django日志配置.mp4 │ 9 django日志配置二.mp4 │ Reboot自动化班课件-django-logging.pdf │ Reboot自动化班课件-第二天-django基础.pdf │ ├─03.第...

    百度地图开发java源码-TypicalWebProject:一个典型的JavaWeb项目

    目的:主要是了解做项目的流程,练习写代码,并不会过分着重于需求的设计。 项目亮点: 对Dao层:自己模拟了Hibernate,手写了一个小型的ORM框架。原理说到底就是反射+JDBC的封装+Sql语句拼接字符串。 对Controller...

    Ext Js权威指南(.zip.001

    10.1.6 虚拟滚动条的工作原理:ext.grid.pagingscroller / 511 10.1.7 锁定列的运行流程:ext.grid.lockable与ext.grid.lockingview / 516 10.2 使用grid / 520 10.2.1 最简单的grid / 520 10.2.2 列的配置项 /...

    单点登录源码

    | └── zheng-upms-server -- 用户权限系统及SSO服务端[端口:1111] ├── zheng-cms -- 内容管理系统 | ├── zheng-cms-common -- cms系统公共模块 | ├── zheng-cms-dao -- 代码生成模块,无需开发 | ├──...

    structs程序设计从入门到精通word文档

    2.2 Struts原理、开发及项目实施 8 2.3使用STRUST控制流 8 2.4讨论STRUTS的优缺点 9 2.5 Struts入门经验 9 2.6用strtus制作登陆页面: 9 第3章Struts 基础学习 9 3.1Struts标记库 9 3.2Struts框架基础篇 9 3.3Struts...

    网络架构师148讲视频课程

    │ 第11节:Mybatis的分页实现.avi │ 第12节:Service的实现以及模块化.avi │ 第13节:Spring MVC实现Web层开发.avi │ 第14节:新增和列表页面和分页tag.avi │ 第15节:带查询的分页、修改和删除页面.avi │ 第...

Global site tag (gtag.js) - Google Analytics