利用自己封装的page类实现oracle数据库的分页查询

本文介绍了如何利用自定义的Page类实现Oracle数据库的分页查询。内容涵盖Page类的设计,以及在mapper、dao、service、controller各层的使用方法,包括SQL语句的编写和页面展示的细节。通过Page类的构造方法和属性设置,实现了灵活的分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己创建的page类

package com.baizhi.entity;

public class Page {
	//当前页起始页
	private int pageBegin;
	//当前页末端页
	private int pageEnd;
	//总条数
	private int totalCount;
	//总页数
	private int pageCount;
	//每页的条数
	private int pageNum;
	//当前页数
	private int pageIndex;
	public int getPageIndex() {
		return pageIndex;
	}
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}
	public int getPageBegin() {
		//当前页数*每页条数-(每页条数-1)
		pageBegin = (pageIndex-1) * pageNum+1;
		if (pageBegin<1) {
			pageBegin = 1;
			return pageBegin;
		} else {
			return pageBegin;
		}
	}
	public void setPageBegin(int pageBegin) {
		this.pageBegin = pageBegin;
	}
	public int getPageEnd() {
		//当前页的最后页数
		pageEnd = pageNum * pageIndex;
		return pageEnd;
	}
	public void setPageEnd(int pageEnd) {
		this.pageEnd = pageEnd;
	}
	public int getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}
	public int getPageCount() {
		//总页数 = 如果总条数
		if (totalCount%pageNum==0) {
			pageCount = totalCount/pageNum;
		} else {
			pageCount = totalCount/pageNum+1;
		}
		return pageCount;
	}
	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	public int getPageNum() {
		return pageNum;
	}
	public void setPageNum(int pageNum) {
		this.pageNum = pageNum;
	}
	public Page() {
		super();
		// TODO Auto-generated constructor stub
	}
	//构造   参数列表 为  :每页user数     当前页数
	public Page(int pageNum, int pageIndex) {
		super();
		this.pageNum = pageNum;
		this.pageIndex = pageIndex;
	}
	@Override
	public String toString() {
		return "Page [pageBegin=" + pageBegin + ", pageEnd=" + pageEnd
				+ ", totalCount=" + totalCount + ", pageCount=" + pageCount
				+ ", pageNum=" + pageNum + ", pageIndex=" + pageIndex + "]";
	}


}

在各个层的使用

mapper文件的SQL语句

 <!--分页展示-->
    <select id="findAllByPage" resultType="product" parameterType="Page">
        select p1.* from
          (select p.*,ROWNUM r from SHOP_PRODUCT p)p1
        where p1.r between #{pageBegin} and #{pageEnd}
    </select>

dao层接口

List<Product> findAllByPage(Page page);

service层的使用

 @Override
    public List<Product> findAll(Page page) {
        //查询所有图书的数量
        Integer count = productDAO.findCount();
        page.setTotalCount(count);
        List<Product> products = productDAO.findAllByPage(page);
        return products;
    }

controller层的使用

 @RequestMapping("showAll")
    public String showAll(Page page, Model model) {
        List<Product> products = null;
        if (page==null) {
            //没创过
            Page page1 = new Page(2, 1);
            products = productService.findAll(page1);
        } else {
            //声明 每页有多少user
            page.setPageNum(2);
            System.out.println("当前页数" + page.getPageIndex());
            products = productService.findAll(page);
        }
        System.out.println(products);
        model.addAttribute("products",products);
        model.addAttribute("page",page);
        return "productlist";
    }

页面分页展示

<ul class="pagination">
          <c:if test="${requestScope.page.pageIndex >1}">
          <li> <a href="${pageContext.request.contextPath}/product/showAll?pageIndex=${requestScope.page.pageIndex-1}">上一页</a></li>
          </c:if>
         <li><a href="javaScript:void(0)">当前页:${requestScope.page.pageIndex}</a></li>
          <c:if test="${requestScope.page.pageIndex < requestScope.page.pageCount}">
                    <li><a  href="${pageContext.request.contextPath}/product/showAll?pageIndex=${requestScope.page.pageIndex+1}">下一页</a></li>
         </c:if>
    </ul>

注意
自己封装的page实体类,利用page中成员变量的set和get 方法,利用page的构造方法设置自己分页查询的总条数和每页展示的数量,即可对page中各个属性进行赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值