2016-04-20 36 views
0

我想要這樣做:當我收到一個get請求時,我應該顯示我的db的客戶列表。我有300個客戶,如果我想要以10個項目的頁面顯示他們,我該怎麼辦?我認爲,我可以從獲取請求中獲得頁面的數量,並顯示前10頁,如果頁面爲1,客戶從11到20是2,但我不知道該怎麼做,有人可以幫我嗎? 這是我的doGet方法將查詢結果發送到一個servlet頁面中的10個項目java

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    String id = req.getParameter("idCustomer"); 
    Gson g = new Gson(); 
    try { 
     ManageCustomer manageCustomer = new ManageCustomer(); 
     System.out.println("********** \n\nID="+ id + " \n\n*****************"); 
     if (id != null)) { 
      Customer customer = manageCustomer.findCustomerById(id); 
      if (customer == null) 
       resp.setStatus(404); 
      if (customer != null) { 
       //only one customer 
       resp.getOutputStream().println(g.toJson(customer)); 
       resp.setStatus(200); 
      } 
     } else { 
//here i have all the customer in a list 
      List<Customer> customers = manageCustomer.findAllCustomers(); 
      if (customers != null) { 
       resp.getOutputStream().println(g.toJson(customers)); 
       resp.setStatus(200); 
      } else // customer not found 
       resp.setStatus(404); 

     } 
    } catch (Exception e) { 
     resp.setStatus(500); 
     e.printStackTrace(); 
    } 

} 

回答

0

希望這有助於..

編輯:大小限制檢查加..

int pageNum = 
    req.getParameter("pageNum") == null || req.getParameter("pageNum").equals("") ? 
     0 : Integer.parseint(req.getParameter("pageNum")); 
(pageNum + 1) * 10 <= customers.size()? 
    customers = customers.subList(pageNum * 10, (pageNum + 1) * 10) 
    : customers = customers.subList(pageNum * 10, customers.size()); 
+0

這可以幫助很多,但有一個問題,如果我想向客戶展示從300到310,我只有309客戶推移arrayindexoutofbound,我可以」 t顯示在該範圍之間的9個客戶 - –

+0

@FilomenaDelSorbo編輯我的代碼 –

+0

確定但第二個子列表不起作用,您沒有第二個索引 –

0

你需要管理的結果集的Hibernate使用讀取你查詢:

query.setFirstResult(...); 
query.setMaxResults(PAGE_SIZE); //should be 10 in your case 

要得到第一個結果,你可以做類似如下:

protected int getFirstElement(PaginationDTO dto) { 
    if(dto.getPage() <= 1){ 
     return 0; //allows user to send page = 1, instead of being 0 based 
    } 

    return (dto.getPage() - 1) * PAGE_SIZE; 
} 
0

在ManageCustomer創建一個新的方法

List<Customer> findAllCustomer(int currentPage,int pageSize){ 
    Query selectQuery = session.createQuery("QUERY_FOR_FETCHING_ALL_CUSTOMER"); 
    selectQuery.setFirstResult((currentPage- 1) * pageSize); 
    selectQuery.setMaxResults(pageSize); 
    List<Customer> customers = selectQuery.list(); 
    return customers; 
} 
0

你可以把兩個參數在GET要求limitoffset,這裏limit是10
然後在你的數據庫查詢,你可以通過這些參數值來使你的查詢 ,因爲你使用休眠,你可以使用這樣的事情,

// SQL: SELECT colum_name FROM table LIMIT offset, limit; 

Query query = session.createQuery("FROM table"); 
query.setFirstResult(start); 
query.setMaxResults(maxRows); 

resultset對象甚至會告訴您是否有任何結果,因此您可以使用它來enable/disable a next按鈕。
如果有更多的結果發送新號碼冬眠offset+limitlimit

+0

謝謝你的作品,但它不正確,我想做... –

相關問題