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>
Struts+Spring+MyBatis MVC模式实现分页分页查询
最新推荐文章于 2021-03-17 00:38:49 发布