传智播客mysql分页的实现_传智播客--分页

整理了一宿,终于找到了头绪,在头脑还算清醒时,整理下分页的笔记.

我这个分页用的是Oracle的数据库.他在查询时涉及到了一个伪列. table名为

employees.

创建bean对象employee.属性如下:

private int employee_id;

private String first_name;

private String email;

private String phone_number;

private String job_id;

生成getXXX和setXXX方法

创建Page类,用来保存数据对象

private int totalRecords;//数据的总记录

private int totalPage;//总页数

private int pageRecords=7;每页显示记录数,即每页显示7条

private int startIndex;//每页数据在数据库中的起始位置

private int endWith;//每页数据在数据库中的结束位置

private List list;//存储emoloyee对象

生成getXXX和setXXX方法

构造方法

public Page (int totalRecords,int pagenum){

pagenum=(totalRecords+pageRecords-1)/pageRecords;//获取总页数

startIndex=pageRecords*(pagenum-1);//获取每页数据在数据库中的起始位置

endWith=startIndex+pageRecords-1;//数据在数据库中的结束位置

}

创建类EmployeeDao 此类获取数据库中的数据 包括数据库的连接(dbcp数据库连接池)

public class EmployeeDao{

-------------

获取连接池

private static DataSource datasource=null;

static{

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null

try{

Properties prop=new Properties();

InputStream

in=EmployeeDao.class.getClassLoader().getRecourceAsStream

("dbcpconfig.properties");

prop.load(in);

BasicDataSourceFactory

factory=new BasicDataSourceFactory();

datasource=factory.createDataSource(prop);

}catch(Exception e){

e.printStackTrace();

}finally{

//关闭连接 简写

conn.close();

ps.close();

rs.close();

}

注: dbcpconfig.properties文件中驱动加载.

driverClassName=oracle.jdbc.driver.OralceDriver

uri=jdbc:oracle:thin:@localhost:1521:orcl(注:orcl是安装Oracle时给予的全局数据库名)

username=登录数据库用户名

password=登录数据库密码

-----------------------

//获取数据库中的数据

public Int getTotalRecords(){

Connection conn=null;

try{

conn=datasource.getConnection();

String sql="select count(*) from

employees";

ps=conn.preparedStatement(sql);

rs=ps.executeQuery();

if(rs.next()){

return

rs.getInt(1);

}else{

return -1;

}

}catch(Exection e){

e.printStackTrace();

}

return 0;

}

}

--------------------

//获取数据封装到employee对象中

public List getEmployeeBypagenum(int totalRecords,int

pagenum){

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null;

List list=new ArrayList();

String sql="select * from (select rownum

rr,employee_id,first_name,email,phone_number,job_id from employees

) e where e.rr between ? and ?)";

try {

conn=datasource.getConnection();

ps=conn.prepareStatement(sql);

ps.setInt(1,

startindex);

ps.setInt(2,

startindex+7-1);

rs=ps.executeQuery();

List list=new

ArrayList();

while(rs.next()){ employee

em=new employee();

em.setEmployee_id(rs.getInt(1));

em.setFirst_name(rs.getString(2));

em.setEmail(rs.getString(3));

em.setPhoneNumber(rs.getString(4));

em.setJob_id(rs.getString(5));

list.add(em);

}

return

list;

} catch (SQLException e)

{

// TODO

Auto-generated catch block

e.printStackTrace();

}finally{

relase(conn,ps,rs);//我自己写的关闭数据库连接的方法

}

}

}

----------------------------

servlet中对数据的处理

doget()方法中

int

pagenum=1;//第一次访问时pagenum定义是1

String

pagenu=request.getParameter("pagenum");

if(pagenu!=null){//不为null即返回第几页

int pagenum=Integer.parInt(pagenu);

EmployeeDao employeedao=new EmployeeDao();

int

totalRecords employeedao.getTotalRecords();//获取总记录数据

employee employe=new employee();

Page page=new Page(totalRecords,pagenum);//获取当页数据封装到page中

List

list=employeedap.getEmloyeeBypage(page.getStartIndex,page.getEndWith());//获取数据对象封装到list中

page.setList(list);//再将list封装到page中

request.setAttribute("page",page);//在page放到request域中

request.getRequestDisPatcher("index.jsp").forward(request,response);

}

-----------------------------------

在显示页面中 使用jstl标签 和el表达式

var="employee">

${employee.employee_id

}|${employee.first_name }|${employee.email

}|${employee.phone_number }|${employee.job_id

}


var="i">

${i }

-----------------------------

注:此分页只选择了重要代码块加以描述,有需要代码的请留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值