package com.pms.util;
//这个是page的工具类
public class PageBean {
// 页面大小
public int pageSize = 5;
// 当前是第几页
private static int pageNo;
// 一共多少页
private int pageCount;
// 取下一页的页码
public int getNextPage() {
if (pageNo >= pageCount) {
pageNo = pageCount;
} else {
pageNo = pageNo + 1;
}
return pageNo;
}
public int getBeforePage() {
if (pageNo <= 1) {
pageNo = 1;
} else {
pageNo = pageNo - 1;
}
return pageNo;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
if (pageNo <= 1) {
PageBean.pageNo = 1;
} else if (pageNo >= pageCount) {
PageBean.pageNo = pageCount;
} else {
PageBean.pageNo = pageNo;
}
}
public int getPageCount() {
return pageCount;
}
// 表中数据的行数count
public void setPageCount(int count) {
if (count % pageSize == 0) {
this.pageCount = count / pageSize;
} else {
this.pageCount = count / pageSize + 1;
//pagecount即为一共将要返回多少页,首先先赋给这个类有一共多少页这个值,然后就可以取到它可以返回的页数
}
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
下面是Dao里面的一个实现,利用oracle的三层分页法
package com.pms.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.pms.dao.DepartmentDao;
import com.pms.model.Department;
import com.pms.util.BaseDao;
import com.pms.util.DBConnection;
import com.pms.util.PageBean;
import com.sun.corba.se.spi.orbutil.fsm.State;
public class DepartmentDaoImpl extends BaseDao implements DepartmentDao {
public static int sqlPageNo;// 这俩货是用来往前抬传输当前页面大小和第几页的
public static int sqlPageSize;
public static int sqlPageCount;
public List<Department> find(Department department, String pageNoWeb,
int pageSizeWeb) {
// TODO Auto-generated method stub
String sql = "select * from department where isdelete = 0 and name like'%"
+ department.getName() + "%'";
String sqlSize = "select count(*) from department where isdelete = 0 and name like'%"
+ department.getName() + "%'";
if (department.getType().equals("0")) {
sql += "and type like '%部门%'";
sqlSize += "and type like '%部门%'";
} else if (department.getType().equals("1")) {
sql += "and type like '%公司%'";
sqlSize += "and type like '%公司%'";
}
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSizeWeb);
pageBean.setPageCount(getSqlCount(sqlSize));
int pageCount = pageBean.getPageCount();
int pageNo = 1;
int pageSize = pageBean.getPageSize();
if (pageNoWeb.equals("first")) {
pageBean.setPageNo(1);
} else if (pageNoWeb.equals("end")) {
pageBean.setPageNo(pageCount);
pageNo = pageCount;
} else if (pageNoWeb.equals("next")) {
pageNo = pageBean.getNextPage();
} else if (pageNoWeb.equals("before")) {
pageNo = pageBean.getBeforePage();
} else {
pageNo = pageBean.getPageNo();
}
String sqlFinal = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (" + sql
+ ") A WHERE ROWNUM <= " + pageNo * pageSize + ") WHERE RN >= "
+ ((pageNo - 1) * pageSize + 1);
sqlPageNo = pageNo;
sqlPageSize = pageSize;
sqlPageCount = pageCount;
return this.executeQuery(sqlFinal, null, Department.class);
}
public List<Department> findAll(String pageNoWeb, int pageSizeWeb) {
// TODO Auto-generated method stub
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSizeWeb);
pageBean
.setPageCount(getSqlCount("select count(*) from department where isdelete = 0"));
int pageCount = pageBean.getPageCount();
int pageNo = 1;
int pageSize = pageBean.getPageSize();
if (pageNoWeb.equals("first")) {
pageBean.setPageNo(1);
} else if (pageNoWeb.equals("end")) {
pageBean.setPageNo(pageCount);
pageNo = pageCount;
} else if (pageNoWeb.equals("next")) {
pageNo = pageBean.getNextPage();
} else if (pageNoWeb.equals("before")) {
pageNo = pageBean.getBeforePage();
} else {
pageNo = pageBean.getPageNo();
}
String sqlFinal = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM department where isdelete = 0 order by id) A WHERE ROWNUM <= "
+ pageNo
* pageSize
+ ") WHERE RN >= "
+ ((pageNo - 1) * pageSize + 1);
sqlPageNo = pageNo;
sqlPageSize = pageSize;
sqlPageCount = pageCount;
return executeQuery(sqlFinal, null, Department.class);
}
private int getSqlCount(String sqlsize) {
try {
conn = DBConnection.getConnection();
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sqlsize);
while (resultSet.next()) {
int count = resultSet.getInt(1);
return count;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public Department findById(int id) {
// TODO Auto-generated method stub
String sql = "select * from department where isdelete = 0 and id = "
+ id;
List list = this.executeQuery(sql, null, Department.class);
sqlPageNo = 1;
sqlPageSize = 5;
sqlPageCount = 1;
if (list.size() == 1) {
return (Department) list.get(0);
}
return null;
}
@SuppressWarnings("unchecked")
public void insert(Department department) {
// TODO Auto-generated method stub
String sql = "insert into department values(?,?,?,?,?,?,?,?,?)";
List list = new ArrayList();
list.add(department.getId());
list.add(department.getDescription());
list.add(department.getFax());
list.add(department.getFoundDate());
list.add(department.getIsDelete());
list.add(department.getName());
list.add(department.getPhone());
list.add(department.getSuperDeptId());
list.add(department.getType());
this.executeUpdate(sql, list);
}
public static int getSqlPageSize() {
return sqlPageSize;
}
public static int getSqlPageNo() {
return sqlPageNo;
}
public static int getSqlPageCount() {
return sqlPageCount;
}
public int update(Department department) {
return executeUpdate(department);
}
public List<Department> findAll() {
// 和上面那个两个参数的findall不同,这货返回的是数据库内所有的数据,包括已经删除的。这货是生成ID时候的用的
String sqlFinal = "SELECT * FROM department order by id";
return executeQuery(sqlFinal, null, Department.class);
}
public List<Department> find(Department department) {
// TODO Auto-generated method stub
return null;
}
}