ssm分页使用

ssm分页及插件

第一种是分页的最原始方法使用流程以及介绍
项目结构如下图所示:
左边展开的就是我的项目结构
就拿我的数据库中的商品来说吧,
第一步肯定是写实体类(最好跟数据库字段完全对应):如图
在这里插入图片描述
第二部我们来写xml文件查询的sql语句:如图
在这里插入图片描述
在这里插入图片描述
这都dao接口中的:
在这里插入图片描述
xml文件中的start(开始页)和size(每页的条数)是从map集合中传入的,传入map集合的原因是我们在service中把start和size
封装到了map中,接下来看看service中实现类中的代码:

@Override
	public PageBean<Product> AllByPage(int currPage) {
		// TODO Auto-generated method stub
		PageBean<Product> page=new PageBean<>();
		HashMap<String, Object> map=new HashMap<>();
		//封装当前页数
		page.setCurrPage(currPage);
		//每页显示的数据
		int pageSize=4;
		page.setPageSize(pageSize);
		//总记录数
		int totalCount=dao.selectCount();
		page.setTotalCount(totalCount);
		//总页数
		Double tc=(double) totalCount;
		Double num=Math.ceil(tc/pageSize);
		//把double类型转成int类型
		page.setTotalPage(num.intValue());
		map.put("start", (currPage-1)*pageSize);
		map.put("size", pageSize);
		List<Product> lists=dao.AllByPage(map);
		//封装结果集
		page.setLists(lists);
		return page;
	}

另外这是PageBean也就是封装商品实体类的分页的类:

package com.laoli.model;

import java.util.List;

public class PageBean <T>{
	private int currPage;//当前页
	private int pageSize;//每页显示的记录数
	private int totalCount;//总记录数
	private int totalPage;//总页数
	private List<T> lists;//查询的数据
	public int getCurrPage() {
		return currPage;
	}
	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}
	public int getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public List<T> getLists() {
		return lists;
	}
	public void setLists(List<T> lists) {
		this.lists = lists;
	}
	@Override
	public String toString() {
		return "PageBean [currPage=" + currPage + ", pageSize=" + pageSize + ", totalCount=" + totalCount
				+ ", totalPage=" + totalPage + ", lists=" + lists + "]";
	}
	
}

因为我们已经在商品service的实现类中吧我们想要的数据封装到了PageBean中,所以我们返回的是一个PageBean类型,controller接收到的也是一个PageBean类型,接下来是controller中的代码:

@RequestMapping("/main")
	public String men(Model model,@RequestParam(value = "currPage",defaultValue = "1",required = false) int currPage) {
		//这是我们从service拿到的PageBean类型的
		PageBean<Product> list=service.AllByPage(currPage);
		model.addAttribute("pro", list);
		return"main";
	}

因为我的每页显示的条数在service实现类中已经写死了,所以我就只传过去一个当前页数就可以了,当前页数默认是1,当前页数是从页面传入的,接下来就是jsp页面的代码:

<h6 align="left">商品列表</h6>
<div class="row">
<c:forEach items="${pro.lists}" var="pro">
  <div class="col-xs-6 col-md-3">
    <a href="img?filename=${pro.imgname}" class="thumbnail">
      <img src="${pageContext.request.contextPath}/${pro.img}"title="${pro.name}">
    </a>
  </div>
  </c:forEach>
  
</div>


<nav aria-label="Page navigation">

  <ul class="pagination pagination-lg" style="padding-left: 40%">
    <li>
    <c:if test="${pro.currPage!=1}">
      <a href="main?currPage=${pro.currPage-1}" aria-label="Previous">
        <span aria-hidden="true">上一页</span>
      </a>
      </c:if>
    </li>
    <c:forEach begin="1" end="${pro.totalPage}" var="page">
    <li><a href="main?currPage=${page}">${page}</a></li>
    </c:forEach>
    <li>
    <c:if test="${pro.currPage<pro.totalPage}">
      <a href="main?currPage=${pro.currPage+1}" aria-label="Next">
        <span aria-hidden="true">下一页</span>
      </a>
     </c:if>
    </li>
  </ul>
</nav>

特别要注意点是我们从控制层传过来的名字是pro,但是我们用jstl遍历的名字不是他,而是PageBean中的封装进去的商品实体类,
名字是lists,所以我们遍历的就是他在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值