2017-02-04 12 views
1

здесь мой следующий дао implementaionкак я могу реализовать пагинацию весной JdbcTemplate

@Override 
    public List<UserAddress> getAddresses(int pageid,int total) { 

     String sql = "select * FROM user_addresses order by id desc limit "+(pageid-1)+","+total; 
     List<UserAddress> userAddresses = jdbcTemplate.query(sql, new RowMapper<UserAddress>() { 
      @Override 
      public UserSessionLog mapRow(ResultSet rs, int rowNum) throws SQLException { 
       UserAddress userAdd = new UserAddress(); 
       userAdd.setId(rs.getInt("id")); 
       userAdd.setId(rs.getString("city")); 
       return userSession; 
      } 
     }); 
     return userAddresses; 
    } 

в вышеприведенном дао implementaion, я перечислить все адреса пользователей, пытаясь перечислить с пределом

@RequestMapping("/userAddresses/{pageid}") 
     public ModelAndView userAddresses(@PathVariable int pageid) { 
     int total=5; 
     if(pageid==1){} 
     else{ 
      pageid=(pageid-1)*total+1; 
     } 
     List<UserAddress> listAddresses = userAddressFacade.getAddresses(pageid,total); 
     return new ModelAndView("userAddresses", "listAddresses", listAddresses); 
    } 

это мой взгляд часть,

<table class="table table-condensed"> 
     <thead> 
      <tr> 
       <th>Address1</th> 
       <th>City</th> 
      </tr> 
     </thead> 
     <tbody> 
      <c:if test="${not empty addresses}"> 
       <c:forEach var="address" items="${addresses}"> 
        <tr> 
         <td>${address.address1}</td> 
         <td>${address.city}</td> 
        </tr> 
       </c:forEach> 
      </c:if> 
     </tbody> 
    </table> 

    <br/> 
    <a href="/pro/userAddress/1">1</a> 
    <a href="/pro/userAddress/2">2</a> 
    <a href="/pro/userAddress/3">3</a> 

У меня есть жестко закодированная часть разбиения на страницы, у кого-нибудь есть идея, как делать разбиение на страницы. Я новичок в java jdbcTemplate,

ответ

-1

Вам не нужно создавать собственную логику реализации для разбивки на страницы. Используйте Spring PagedListHolder, он подходит и настраивается для целей разбивки на страницы.

Здесь вы можете увидеть пример реализации: Spring Pagination Example.

+2

Есть небольшая проблема с вашим предложением. Вопрос заключается в том, как реализовать разбиение на страницы запросов к базе данных, что подразумевает, что именно то, чего мы хотим избежать, - это получать большие объемы данных из базы данных через сеть и хранить их в памяти, когда мы можем использовать только небольшую часть этого. Однако ваш подход состоит в том, чтобы группировать коллекции в память, а точнее списки. Но идея не в том, чтобы создавать эти списки. И поэтому, если я не пропущу что-то здесь, я боюсь, что это решение является оксюмороническим. –

+0

Оригинальный вопрос о «разбивке на страницы» и для этой цели создан PagedListHolder, не так ли? – Artegon

+0

До некоторой степени да. Но вопрос заключается не только в этом, не так ли? В нем указано разбиение на страницы с помощью JDBCTemplate, что подразумевает, что это разбиение на страницы запросов к базе данных. Если ваш JDBCTemplate выдает запрос, который содержит 5000 записей, было бы более эффективно разбивать страницы на уровне базы данных, чем переносить 5000 записей по сети, хранить их в памяти, чтобы просто использовать PageListHolder для возврата первых 100, а затем повторить все снова, когда пользователь запрашивает вторую страницу, вам не кажется? Не говоря уже о невероятном количестве ресурсов, потраченных впустую, если мы это сделаем. –

 Смежные вопросы

  • Нет связанных вопросов^_^