东软学习,基于oracle的一个分页实例

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;
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值