ssm实现分页查询

本文介绍了在SSM框架中实现分页查询的步骤,包括创建分页实体类,编写Mapper层的SQL代码,控制器层的处理,以及前端页面的展示。核心在于将分页逻辑与查询结合,实现数据的高效检索。

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

在用ssm框架写一个项目时,用到了分页

首先写一个分页实体类

package com.ordertime.utils;

import java.util.ArrayList;
import java.util.List;

public class Page<T> {
	//当前页
	private int pageno;
	//当前页开始下标
	private int pageStartIndex;
	//每页显示的数量
	private int pagesize;
	//总记录数
	private int totalRows;
	//总页数
	private int totalPages;
	//每页显示的内容
	private List<T> datas;
	
public Page(int pageno, int pagesize) {
		this();
		if(pageno <= 0){
			pageno = 1;
		}
		if(pagesize <= 0){
			pagesize = 5;
		}
		this.pageno = pageno;
		this.pagesize = pagesize;
		
	}

public Page() {
	super();
	this.pageno = 1;
	this.pagesize =5;
	datas = new ArrayList<>();
}

public int getPageno() {
	return pageno;
}

public void setPageno(int pageno) {
	this.pageno = pageno;
}

public int getPageStartIndex() {
	pageStartIndex = (pageno - 1)*pagesize; 
	return pageStartIndex;
}

public void setPageStartIndex(int pageStartIndex) {
	this.pageStartIndex = pageStartIndex;
}

public int getPagesize() {
	return pagesize;
}

public void setPagesize(int pagesize) {
	this.pagesize = pagesize;
}

public int getTotalRows() {
	return totalRows;
}

public void setTotalRows(int totalRows) {
	this.totalRows = totalRows;
}

public int getTotalPages() {
	if(totalRows % pagesize == 0){
		totalPages = totalRows / pagesize;
	}
	else
		totalPages = totalRows / pagesize + 1;
	return totalPages;
}

public void setTotalPages(int totalPages) {
	this.totalPages = totalPages;
}

public List<T> getDatas() {
	return datas;
}

public void setDatas(List<T> datas) {
	this.datas = datas;
}

@Override
public String toString() {
	return "Page [pageno=" + pageno + ", pageStartIndex=" + pageStartIndex + ", pagesize=" + pagesize
			+ ", totalRows=" + totalRows + ", totalPages=" + totalPages + ", datas=" + datas + "]";
	}
}

mapper层sql代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ordertime.goods.dao.IGoodsDao">
	//查询总记录数
	<select id="selectAllCount" resultType="int">
         SELECT COUNT(*) FROM goods 
         WHERE bid = #{id} 
     </select>
 
     <select id="selectCurrentPage" resultType="Goods">
         select gid,goodsname,goodsprice,image,goodsdesc from goods where bid=#{bid} LIMIT #{startIndex},#{size}
     </select>
</mapper>

再到controller层

@RequestMapping("/selectGoods.do")
public String selectGoods(HttpServletRequest request,@RequestParam(defaultValue="1") int pageno){
	HttpSession session = request.getSession(false);
	Business business = (Business) session.getAttribute("business");
	Business bid = service.findBidByBusinessid( business.getBusinessid());
	Page<Goods> page = service.findCurrentPage(pageno, bid.getBid());
	//System.out.println(page);
	session.setAttribute("page", page);
	
	return "redirect:/Goods/index.jsp";
}

页面显示代码

<div style="padding-left:700px;padding-top:20px;">
<c:choose>
        <c:when test="${page.totalPages == 1}">
        	<div> 首页 &nbsp;&nbsp; 上一页&nbsp;&nbsp; 下一页&nbsp;&nbsp; 末页&nbsp;&nbsp;    当前是${page.pageno } / ${page.totalPages }页 共${page.totalRows }条记录</div>
        </c:when>
     
    <c:when test="${page.pageno == page.totalPages}">
    	<div><a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=1&id=${bid}"> 首页</a> &nbsp;&nbsp;<a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.pageno -1}&id=${bid}"> 上一页 </a> &nbsp;&nbsp; 下一页&nbsp;&nbsp; 末页&nbsp;&nbsp;    当前是${page.pageno } / ${page.totalPages }页 共${page.totalRows }条记录</div>
    </c:when>
    
    <c:when test="${page.pageno == 1}">
		<div> 首页 &nbsp;&nbsp; 上一页&nbsp;&nbsp;<a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.pageno +1}&id=${bid}"> 下一页 </a>&nbsp;&nbsp;<a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.totalPages}&id=${bid}">末页</a> &nbsp;&nbsp;    当前是${page.pageno } / ${page.totalPages }页 共${page.totalRows }条记录</div>
    </c:when>
    
    <c:otherwise>
    	<div><a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=1&id=${bid}">  首页</a> &nbsp;&nbsp;<a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.pageno -1}&id=${bid}">  上一页</a> &nbsp;&nbsp;<a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.pageno +1}&id=${bid}">  下一页 </a> &nbsp;&nbsp; <a href="${pageContext.request.contextPath }/goods/selectGoods.do?pageno=${page.totalPages}&id=${bid}"> 末页 </a>&nbsp;&nbsp;    当前是${page.pageno } / ${page.totalPages }页 共${page.totalRows }条记录</div>
    </c:otherwise>
    
</c:choose>
</div>

我觉得分页查询就是建好分页类,其他就是查询的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值