SSM Mybatis 分页

可以借助工具 插件pagehepler但是必须要遍历,不然会返回一个page对象,做了一个原始分页 原理都是一样的

首先是maven包

<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.1.4</version>
		</dependency>

配置拦截器 spring_mybaties

<property name="plugins">
			<array>
				<bean class="com.github.pagehelper.PageHelper">
					<property name="properties">
						<value>
							dialect=mysql
						</value>
					</property>
				</bean>
			</array>
		</property>

mapper. xml

<select id="selectdiscountsGoodsBydiscountsname" resultType="goods">
	select g.* from t_goods g,t_discounts d where g.goodsname=d.discountsname
</select>	select g.* from t_goods g,t_discounts d where g.goodsname=d.discountsname
</select>

controller

@RequestMapping("cp.do")
	public ModelAndView cp(HttpServletRequest request){
		//获取当前页数
        String pageNow=request.getParameter("pageNow");
        //获取总页数
        int totalCount=(int)goodsService.findNewCont();
        Page page=null;
        List<Goods> list=new ArrayList<Goods>();
        if (pageNow!=null) {
            page=new Page(Integer.parseInt(pageNow), totalCount);
            list=goodsService.findNewsPage(page.getStartPos(),page.getPageSize());
        }else {
            page=new Page(1, totalCount);
            list=goodsService.findNewsPage(page.getStartPos(),page.getPageSize());
        }
        System.out.println("list"+list);
        System.out.println("page"+page);
		ModelAndView mvc=new ModelAndView("cp");//自动拼接
		mvc.addObject("list", list);
	    mvc.addObject("page", page);
		return mvc;
	}

工具类不能忘,网上有很多可以借鉴

package com.Rice.util;

import java.io.Serializable;
public class Page implements Serializable {
	private static final long serialVersionUID = 1L;
	private int pageNow = 1; // 当前也是
	private int pageSize = 6; // 每页显示的数量
	private int totalCount; // 总记录数
	private int totalPageCount; // 总页数
	private int startPos; // 开始位置,从0开始
	private boolean hasFrist; // 是否有首页
	private boolean hasPre; // 是否有前一页
	private boolean hasNext; // 是否有后一页
	private boolean hasLast; // 是否有尾页
	/**
	 * 通过构造函数,传入总记录数和当前页
	 * 
	 * @param pageNow
	 * @param totalCount
	 */
	public Page(int pageNow, int totalCount) {
		super();
		this.pageNow = pageNow;
		this.totalCount = totalCount;
	}
	// 获取总页数
	public int getTotalPageCount() {
		totalPageCount = getTotalCount() / getPageSize();
		return (totalCount / pageSize == 0) ? totalPageCount : totalPageCount + 1;
	}

	public void setTotalPageCount(int totalPageCount) {
		this.totalPageCount = totalPageCount;
	}

	public int getPageNow() {
		return pageNow;
	}

	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

	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 getStartPos() {
		return (pageNow - 1) * pageSize;
	}

	public void setStartPos(int startPos) {
		this.startPos = startPos;
	}

	// 判断是否有第一页
	public boolean isHasFrist() {
		return (pageNow == 1) ? false : true;
	}

	public void setHasFrist(boolean hasFrist) {
		this.hasFrist = hasFrist;
	}

	// 如果有首页就有前一页
	public boolean isHasPre() {
		return isHasFrist() ? true : false;
	}

	public void setHasPre(boolean hasPre) {
		this.hasPre = hasPre;
	}

	// 如果有尾页就有下一页
	public boolean isHasNext() {
		return isHasNext() ? true : false;
	}

	public void setHasNext(boolean hasNext) {
		this.hasNext = hasNext;
	}

	// 判断是否有尾页
	public boolean isHasLast() {
		return (pageNow == getTotalCount()) ? false : true;
	}

	public void setHasLast(boolean hasLast) {
                    this.hasLast = hasLast;
                }
	@Override
	public String toString() {
		return "Page [pageNow=" + pageNow + ", pageSize=" + pageSize + ", totalCount=" + totalCount
				+ ", totalPageCount=" + totalPageCount + ", startPos=" + startPos + ", hasFrist=" + hasFrist
				+ ", hasPre=" + hasPre + ", hasNext=" + hasNext + ", hasLast=" + hasLast + "]";
	}
}

前端jsp

<ul>
						<li><font size="2">共 ${page.totalPageCount} 页</font></li>
						<li><font size="2">第 ${page.pageNow} 页</font></li>
						<li><a href="cp.do?pageNow=1">首页</a></li>
						<li><c:choose>
								<c:when test="${page.pageNow - 1 > 0}">
									<a href="cp.do?pageNow=${page.pageNow - 1}">上一页</a>
								</c:when>
								<c:when test="${page.pageNow - 1 <= 0}">
									<a href="cp.do?pageNow=1">上一页</a>
								</c:when>
							</c:choose></li>
						<li><c:choose>
								<c:when test="${page.totalPageCount==0}">
									<a href="cp.do?pageNow=${page.pageNow}">下一页</a>
								</c:when>
								<c:when test="${page.pageNow + 1 < page.totalPageCount}">
									<a href="cp.do?pageNow=${page.pageNow + 1}">下一页</a>
								</c:when>
								<c:when test="${page.pageNow + 1 >= page.totalPageCount}">
									<a href="cp.do?pageNow=${page.totalPageCount}">下一页</a>
								</c:when>
							</c:choose></li>
						<li><c:choose>
								<c:when test="${page.totalPageCount==0}">
									<a href="cp.do?pageNow=${page.pageNow}">尾页</a>
								</c:when>
								<c:otherwise>
									<a href="cp.do?pageNow=${page.totalPageCount}">尾页</a>
								</c:otherwise>
							</c:choose></li>
					</ul>

就ok了

更新一下用用mybaties插件分页

我在controller层做分页处理

public ModelAndView  cpsoup(@RequestParam(name="goodstype") String goodstype,@RequestParam(name="pageNum",defaultValue="1")Integer pageNum,ModelAndView mvc){
		System.out.println("goodstype: " + goodstype);
		PageHelper.startPage(pageNum, 6);
		PageInfo<Goods> goods=new PageInfo<Goods>(good.subList(0, good.size()));
		System.out.println("good : " + goods);
		mvc.setViewName("cpsoup");
		mvc.addObject("goods", goods);
		return mvc;
	}

前端也是一样处理就好啦 ,使用分页差点发现封装比hibernate好用多了

猜你喜欢

转载自blog.csdn.net/qq_20282955/article/details/81025684