Struts+Spring+MyBatis MVC模式实现分页分页查询


Java代码:

import java.util.List;

/*
 * 翻页模板工具类
 * 
 * */
public final class PageModel<T> {
	private int currentPage;// 当前页
	private int pageSize;// 每页显示条数
	private int totalPage;// 总页数
	private int totalRecord;// 总记录数
	private List<T> dataList;// 分页数据

	private PageModel() {
	}

	/*
	 * 初始化PageModel实例
	 */
	private PageModel(final int pageSize, final String page, final int totalRecord) {
		// 初始化每页显示条数
		this.pageSize = pageSize;
		// 设置总记录数
		this.totalRecord = totalRecord;
		// 初始化总页数
		setTotalPage();
		// 初始化当前页
		setCurrentPage(page);

	}

	/*
	 * 外界获得PageModel实例
	 */
	public static PageModel newPageModel(final int pageSize, final String page,
			final int totalRecord) {

		return new PageModel(pageSize, page, totalRecord);
	}

	// 设置当前请求页
	private void setCurrentPage(String page) {
		try {
			currentPage = Integer.parseInt(page);

		} catch (java.lang.NumberFormatException e) {
			// 这里异常不做处理,当前页默认为1
			currentPage = 1;
		}
		// 如果当前页小于第一页时,当前页指定到首页
		if (currentPage < 1) {

			currentPage = 1;
		}

		if (currentPage > totalPage) {

			currentPage = totalPage;

		}

	}

	private void setTotalPage() {
		if (totalRecord % pageSize == 0) {

			totalPage = totalRecord / pageSize;
		} else {
			totalPage = totalRecord / pageSize + 1;
		}
	}

	/*
	 * 获得当前页
	 */
	public int getCurrentPage() {
		return currentPage;
	}

	/*
	 * 获得总页数
	 */
	public int getTotalPage() {
		return totalPage;

	}

	/*
	 * 获得开始行数
	 */
	public int getStartRow() {
		return (currentPage - 1) * pageSize;
	}

	/*
	 * 获得结束行
	 */
	public int getEndRow() {
		return currentPage * pageSize;
	}

	/*
	 * 获得翻页数据
	 */
	public List<T> getDataList() {
		return dataList;
	}

	/*
	 * 设置翻页数据
	 */
	public void setDataList(List<T> dataList) {
		this.dataList = dataList;
	}

	//首页
	 public int getFirst() {
	
	 return 1;
	 }
	//
	//上一页
	
	 public int getPrevious() {
	
	 return currentPage - 1;
	 }
	//
	// // 下一页
	 public int getNext() {
	
	 return currentPage + 1;
	 }
	//
	// // 尾页
	//
	 public int getLast() {
	
	 return totalPage;
	 }


Action中:
public String showBorrowPage() {
		
		Integer currentPage;

		String page = this.getParameter("page");
		// totalRecor计算
		 
		int totalRecord = 0;
		try {
			totalRecord = borrowManagerService.selectTotalRecord();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		PageModel pageModel = PageModel.newPageModel(3, page,
				totalRecord);
		List<Borrow> dataList = new ArrayList<Borrow>();
		try {
			dataList = borrowManagerService.pageSelect(pageModel);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		pageModel.setDataList(dataList);
		this.getReqeust().put("pageModel", pageModel);
		this.getReqeust().put("currentPage",pageModel.getCurrentPage());
		
		//System.out.println(pageModel.getTotalPage());
		return "showBorrowPage";
	}



serviece层:
package com.weixin.bm.rack.service;
public class BorrowManagerServiceImpl implements BorrowManagerService {
	private BorrowDao borrowDao;

	public final void setBorrowDao(BorrowDao borrowDao) {
		this.borrowDao = borrowDao;
	}

    //分页查询
	public List<Borrow> pageSelect(PageModel pageModel) throws SQLException {
		List<Borrow> borrowList = new ArrayList<Borrow>();
		borrowList = borrowDao.pageSelect(pageModel.getStartRow(), pageModel
				.getEndRow());
		return borrowList;
	}
	//计算总条数
	public int selectTotalRecord() throws SQLException {
		 int totalRecord = borrowDao.selectTotalRecord();
		return totalRecord;
	}

}



dao层:

package com.weixin.bm.rack.dao;
import org.mybatis.spring.support.SqlSessionDaoSupport;

import com.weixin.bm.rack.po.Borrow;

public class BorrowDaoImpl extends SqlSessionDaoSupport implements BorrowDao {
	private final static String BM_BORROW_NAMESPACE = "com.weixin.bm.rack.po.BorrowMapper.";
         //分页查询
	public List<Borrow> pageSelect(int startRow,int endRow) throws SQLException {
		List<Borrow> borrowList = new ArrayList<Borrow>();
         Map params =new HashMap();
         params.put("startRow", new Integer(startRow));
         params.put("endRow", new Integer(endRow));
		
		borrowList = this.getSqlSession().selectList(BM_BORROW_NAMESPACE+"pageSelect",params);
		
		return borrowList;
	}
         //得到总条数
	public int selectTotalRecord() throws SQLException {
		int totalRecord = (Integer)this.getSqlSession().selectOne(BM_BORROW_NAMESPACE+"selectTotalRecord");
		return totalRecord;
	}

}


Mybatis配置:
<?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.weixin.bm.rack.po.BorrowMapper">

	<!-- 结果集映射 -->
	<resultMap type="Borrow" id="BorrowResultMap">
		<result property="id" column="id" />
		<result property="managerId" column="manager_id" />
		<result property="borrowerId" column="borrower_id" />
		<result property="bookId" column="book_id" />
		<result property="borrowDate" column="borrow_date" />
		<result property="returnDate" column="return_date" />
		<result property="returnFlag" column="return_flag" />
	
	</resultMap>
	
	<!-- 一对多配置 -->
	<resultMap type="Borrow" id="borrow2Book" extends="BorrowResultMap">
		<association property="book" column="book_id" javaType="Book"
			select="com.weixin.bm.rack.po.BookMapper.selectBookById" />
	</resultMap>
		
		<!-- 分页查询 -->
	<select id="pageSelect" resultMap="borrow2Book" parameterType="map">
		<![CDATA[
		select * from (select * from  (select  id,            
		   manager_id ,      
		   borrower_id ,     
		   book_id,          
		   borrow_date,        
		   return_date,       
		   return_flag,
       	   rownum rn
        FROM bm_borrow) 
        where rn <= #{endRow} ) 
        where rn > #{startRow}
         ]]> 
	</select>
	<!-- 查询总条数-->
	<select id="selectTotalRecord" resultType="int">
	select count(*) from bm_borrow
	</select>
	
	
</mapper>

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值