Pessoal, estou usando o primefaces faz pouco tempo, e percebi que na paginação ele busca todos os registros e traz para o bean, existe alguma maneira de fazer que a consulta seja limitada? por exemplo que ele traga sempre 10 registros.
Paginação dataTable Primefaces 3.1.1
12 Respostas
Não é mais facil você filtrar isso na sua query não ? A tabela vai exibir os dados que você retornou na sua query.
assim como o trodriguesbhPJ disse…
da pra fazer assim pela query…
select coluna_1, coluna_2, coluna_n
from tabela
where rownum < 6 --número de linhas que deseja retornar
order by coluna_x;

psicopato no próprio site do Primefaces contém um exemplo de Lazy Loading utilizando o componente DataTable.
segue o Link
Só uma dica:
int numero_de_paginas = Math.ceil(NRegistros / 10); // numero de paginas para ser divida entre os registros pra poder fazer os links, sei la
int pagina_atual = 0; // pagina atual do caboclo.
“SELECT nome FROM registros LIMIT “+ (pagina_atual * 10) +”, 10”; // pesquisa SQL com limit de 10 em 10.
E assim em diante.
Só uma dica:
int numero_de_paginas =Math.ceil(NRegistros / 10); // numero de paginas para ser divida entre os registros pra poder fazer os links, sei la
int pagina_atual = 0; // pagina atual do caboclo.
“SELECT nome FROM registros LIMIT “+ (pagina_atual * 10) +”, 10”; // pesquisa SQL com limit de 10 em 10.E assim em diante.
Isso se você estiver usando MySQL!!
Caso esteja usando um SQL Server pesquisa por ROW_NUMBER() OVER ()
Só uma dica:
int numero_de_paginas =Math.ceil(NRegistros / 10); // numero de paginas para ser divida entre os registros pra poder fazer os links, sei la
int pagina_atual = 0; // pagina atual do caboclo.
“SELECT nome FROM registros LIMIT “+ (pagina_atual * 10) +”, 10”; // pesquisa SQL com limit de 10 em 10.E assim em diante.
Isso se você estiver usando MySQL!!
Caso esteja usando um SQL Server pesquisa por ROW_NUMBER() OVER ()
Correção amiguinho, não é só MySQL, é o Padrao SQL.
Só uma dica:
int numero_de_paginas =Math.ceil(NRegistros / 10); // numero de paginas para ser divida entre os registros pra poder fazer os links, sei la
int pagina_atual = 0; // pagina atual do caboclo.
“SELECT nome FROM registros LIMIT “+ (pagina_atual * 10) +”, 10”; // pesquisa SQL com limit de 10 em 10.E assim em diante.
Isso se você estiver usando MySQL!!
Caso esteja usando um SQL Server pesquisa por ROW_NUMBER() OVER ()Correção amiguinho, não é só MySQL, é o Padrao SQL.
Caro amigo se no SQL Server tem essa função LIMIT essa é novidade pra mim.
Por que se tiver a função LIMIT no SQL Server post um SQL contendo o mesmo,
por que nas vezes em que precisei de um recurso no SQL Server parecido com a função LIMIT do MySQL
utilizei ROW_NUMBER() OVER ().
jweibe, eu me referi a Padrao SQL:
Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
No caso do SQL Server, possui algumas variações, mas na vdd vc me deixou com duvida se a clausula Limit pertence mesmo ou não ao poadrao ANSI/ISO.
A clausula LIMIT não existe no SQL SERVER, e sim a CLAUSULA TOP, porém não tem como definir parâmetros para fazer paginação assim feito com LIMIT do MYSQL com duas referências
LIMIT 0,10
TOP 10
jweibe, eu me referi a Padrao SQL:Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
No caso do SQL Server, possui algumas variações, mas na vdd vc me deixou com duvida se a clausula Limit pertence mesmo ou não ao poadrao ANSI/ISO.
Caro Vinicius Zibetti Resko como vc mesmo disse que cada gerenciado de banco de dados pode ter variações no SQL.
Sendo assim a função LIMIT é uma função particular do MySQL, especifica para fazer paginação.
Assim como o SQL Server tem o TOP e ROW_NUMBER() OVER (), e o Oracle tem o ROWNUM.
Caso ainda tenha dúvida sobre isso… tente fazer um teste no SQL Server usando a cláusula LIMIT, verás que nem mesmo
será reconhecida.
Amigo, o que eu estava querendo explicar que não é somente no MySQL que tem o Limit e tbm não disse que é no “Padrão SQL” do" SQL Server" que tem o Limit.
Te mais.
Caro Vinicius Zibetti Resko sei que esta discussão esta indo além do que deveria ir, e que o motivo deste post não era este, mais você esta entrando em contradição com suas próprias palavras… nos post acima você diz e que a função LIMIT faz parte do padrão padrão SQL,
agora você vem querendo desfazer suas citações.
Se não tem argumentos sólidos para defender suas idéias por que ta entrando em discussão?
Leia um bom livro de Banco de Dados e depois ai sim exponha sua opiniões fundamentados em conceitos sólidos.