分页查询

Page.java

  1 package com.imooc.entity;
  2 
  3 /**
  4  * 分页对应的实体类
  5  */
  6 public class Page {
  7     /**
  8      * 总条数
  9      */
 10     private int totalNumber;
 11     /**
 12      * 当前第几页
 13      */
 14     private int currentPage;
 15     /**
 16      * 总页数
 17      */
 18     private int totalPage;
 19     /**
 20      * 每页显示条数
 21      */
 22     private int pageNumber = 5;
 23     /**
 24      * 数据库中limit的参数,从第几条开始取
 25      */
 26     private int dbIndex;
 27     /**
 28      * 数据库中limit的参数,一共取多少条
 29      */
 30     private int dbNumber;
 31     
 32     /**
 33      * 根据当前对象中属性值计算并设置相关属性值
 34      */
 35     public void count() {
 36         // 计算总页数
 37         int totalPageTemp = this.totalNumber / this.pageNumber;
 38         int plus = (this.totalNumber % this.pageNumber) == 0 ? 0 : 1;
 39         totalPageTemp = totalPageTemp + plus;
 40         if(totalPageTemp <= 0) {
 41             totalPageTemp = 1;
 42         }
 43         this.totalPage = totalPageTemp;
 44         
 45         // 设置当前页数
 46         // 总页数小于当前页数,应将当前页数设置为总页数
 47         if(this.totalPage < this.currentPage) {
 48             this.currentPage = this.totalPage;
 49         }
 50         // 当前页数小于1设置为1
 51         if(this.currentPage < 1) {
 52             this.currentPage = 1;
 53         }
 54         
 55         // 设置limit的参数
 56         this.dbIndex = (this.currentPage - 1) * this.pageNumber;
 57         this.dbNumber = this.pageNumber;
 58     }
 59 
 60     public int getTotalNumber() {
 61         return totalNumber;
 62     }
 63 
 64     public void setTotalNumber(int totalNumber) {
 65         this.totalNumber = totalNumber;
 66         this.count();
 67     }
 68 
 69     public int getCurrentPage() {
 70         return currentPage;
 71     }
 72 
 73     public void setCurrentPage(int currentPage) {
 74         this.currentPage = currentPage;
 75     }
 76 
 77     public int getTotalPage() {
 78         return totalPage;
 79     }
 80 
 81     public void setTotalPage(int totalPage) {
 82         this.totalPage = totalPage;
 83     }
 84 
 85     public int getPageNumber() {
 86         return pageNumber;
 87     }
 88 
 89     public void setPageNumber(int pageNumber) {
 90         this.pageNumber = pageNumber;
 91         this.count();
 92     }
 93 
 94     public int getDbIndex() {
 95         return dbIndex;
 96     }
 97 
 98     public void setDbIndex(int dbIndex) {
 99         this.dbIndex = dbIndex;
100     }
101 
102     public int getDbNumber() {
103         return dbNumber;
104     }
105 
106     public void setDbNumber(int dbNumber) {
107         this.dbNumber = dbNumber;
108     }
109 }

xml

 1   <select id="queryMessageListByPage" parameterType="java.util.Map" resultMap="MessageResult">
 2     select <include refid="columns"/> from MESSAGE
 3     <where>
 4         <if test="message.command != null and !&quot;&quot;.equals(message.command.trim())">
 5             and COMMAND=#{message.command}
 6         </if>
 7         <if test="message.description != null and !&quot;&quot;.equals(message.description.trim())">
 8             and DESCRIPTION like '%' #{message.description} '%'
 9         </if>
10     </where>
11     order by ID LIMIT #{page.dbIndex},#{page.dbNumber}
12   </select>

dao

 1     public List<Message> queryMessageListByPage(Map<String,Object> parameter) {
 2         DBAccess dbAccess = new DBAccess();
 3         List<Message> messageList = new ArrayList<Message>();
 4         SqlSession sqlSession = null;
 5         try {
 6             sqlSession = dbAccess.getSqlSession();
 7             // 通过sqlSession执行SQL语句
 8             IMessage imessage = sqlSession.getMapper(IMessage.class);
 9             messageList = imessage.queryMessageListByPage(parameter);
10         } catch (Exception e) {
11             // TODO Auto-generated catch block
12             e.printStackTrace();
13         } finally {
14             if(sqlSession != null) {
15                 sqlSession.close();
16             }
17         }
18         return messageList;
19     }

servlet

 1 package com.imooc.servlet;
 2 
 3 import java.io.IOException;
 4 import java.util.regex.Pattern;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 import com.imooc.entity.Page;
12 import com.imooc.service.QueryService;
13 
14 /**
15  * 列表页面初始化和查询控制
16  */
17 @SuppressWarnings("serial")
18 public class ListServlet extends HttpServlet {
19     @Override
20     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
21             throws ServletException, IOException {
22         // 设置编码
23         req.setCharacterEncoding("UTF-8");
24         // 接受页面的值
25         String command = req.getParameter("command");
26         String description = req.getParameter("description");
27         String currentPage = req.getParameter("currentPage");
28         // 创建分页对象
29         Page page = new Page();
30         Pattern pattern = Pattern.compile("[0-9]{1,9}");
31         if(currentPage == null ||  !pattern.matcher(currentPage).matches()) {
32             page.setCurrentPage(1);
33         } else {
34             page.setCurrentPage(Integer.valueOf(currentPage));
35         }
36         QueryService listService = new QueryService();
37         // 查询消息列表并传给页面
38         req.setAttribute("messageList", listService.queryMessageListByPage(command, description,page));
39         // 向页面传值
40         req.setAttribute("command", command);
41         req.setAttribute("description", description);
42         req.setAttribute("page", page);
43         // 向页面跳转
44         req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp);
45     }
46     
47     @Override
48     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
49             throws ServletException, IOException {
50         this.doGet(req, resp);
51     }
52 }
原文地址:https://www.cnblogs.com/sherrykid/p/4631189.html