здесь мой следующий дао 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,
Есть небольшая проблема с вашим предложением. Вопрос заключается в том, как реализовать разбиение на страницы запросов к базе данных, что подразумевает, что именно то, чего мы хотим избежать, - это получать большие объемы данных из базы данных через сеть и хранить их в памяти, когда мы можем использовать только небольшую часть этого. Однако ваш подход состоит в том, чтобы группировать коллекции в память, а точнее списки. Но идея не в том, чтобы создавать эти списки. И поэтому, если я не пропущу что-то здесь, я боюсь, что это решение является оксюмороническим. –
Оригинальный вопрос о «разбивке на страницы» и для этой цели создан PagedListHolder, не так ли? – Artegon
До некоторой степени да. Но вопрос заключается не только в этом, не так ли? В нем указано разбиение на страницы с помощью JDBCTemplate, что подразумевает, что это разбиение на страницы запросов к базе данных. Если ваш JDBCTemplate выдает запрос, который содержит 5000 записей, было бы более эффективно разбивать страницы на уровне базы данных, чем переносить 5000 записей по сети, хранить их в памяти, чтобы просто использовать PageListHolder для возврата первых 100, а затем повторить все снова, когда пользователь запрашивает вторую страницу, вам не кажется? Не говоря уже о невероятном количестве ресурсов, потраченных впустую, если мы это сделаем. –