Postgresql - Quantidade total de registros em uma consulta paginada
11 respostas
B
bacamarte
Olá a todos!
Estou utilizando paginação no postgresql (limit, offset)…
Tem alguma forma de obter o total de registros na mesma execução?
OBS: O total que refiro seria o total de registros que a select traria, caso fossem retirados (limit e offset).
Tentei localizar alguma propriedade do Statement ou ResultSet, mas, sem sucesso…
Mas se a consulta é paginada, a lista não teria o mesmo numero de itens que a paginação?
paulo1911
depende.
Isso ocorre muito na ultima página de registros por exemplo:
eu tenho 100 registros na base
meu pageSize é de 30
sendo assim eu tenho 3 páginas de 30 e uma de 10 registros certo?
Eu posso ter um pageSize de 100 mas se no intervalo eu tiver somente 10 registros nessa pagina o size dessa paginação será o tamanho 10.
fica a dica
Hebert_Coelho
paulo1911:
depende.
Isso ocorre muito na ultima página de registros por exemplo:
eu tenho 100 registros na base
meu pageSize é de 30
sendo assim eu tenho 3 páginas de 30 e uma de 10 registros certo?
Eu posso ter um pageSize de 100 mas se no intervalo eu tiver somente 10 registros nessa pagina o size dessa paginação será o tamanho 10.
fica a dica
-_-’’ isso aí é matemática que funciona apenas para a ultima página, ou seja, apenas por isso nem precisava abrir o post.
Se for isso que ele queria… na boa, não respondo mais nada hoje. MAuhaha
A
AbelBueno
Tente o código abaixo:
count(*) over() total
paulo1911
Pois é, acredito que seja isso que ele precisa.
Paginação não tem segredo.
abç
Hebert_Coelho
paulo1911:
Pois é, acredito que seja isso que ele precisa.
Paginação não tem segredo.
abç
Mas se for na primeira página, como faria do modo como você falou?
paulo1911
Veja:
publicList<UserBean>findAllPaginado(Integerpage,IntegerpageSize){Criteriacriteria=createCriteria();criteria.addOrder(Order.asc("name"));criteria.setFirstResult((page-1)*pageSize);criteria.setMaxResults(pageSize);List<UserBean>toReturn=(List<UserBean>)criteria.list();toReturn.size();// Aqui eu sei quantos registro vieram na página, simples assim! returntoReturn;}
Isso também vale para ResultSet, HQL e NativeQuery…
fica a dica
Hebert_Coelho
paulo1911:
Veja:
publicList<UserBean>findAllPaginado(Integerpage,IntegerpageSize){Criteriacriteria=createCriteria();criteria.addOrder(Order.asc("name"));criteria.setFirstResult((page-1)*pageSize);criteria.setMaxResults(pageSize);List<UserBean>toReturn=(List<UserBean>)criteria.list();toReturn.size();// Aqui eu sei quantos registro vieram na página, simples assim! returntoReturn;}
Isso também vale para ResultSet, HQL e NativeQuery…
fica a dica
Então eu entendi errado. Achei que ele queria o total encontrado na tabela. ^^