JAVA + MYSQL -> Paginar una JTable

Hola. Estoy realizando una aplicacion con Java Web Start y se conecta a una BBDD MySQL. Todo funciona perfectamente, pero el caso es que me gustaria poder paginar los resultados de las consultas y asi poder ir mostrando de 5 en 5 (por ejemplo) en una JTable, pero por mas que busco por internet no encuentro nada.

He probado con LIMIT para MySQL pero solo me muetra hasta donde le indico, el resto no las coge el ResultSet.

A ver si me podeis echar una manita ....

gracias y un saludo! [oki]
Tienes que hacer varias consultas

LIMIT 0,5
LIMIT 5,5
LIMIT 10,5

etc ...

Pero claro son consultas diferentes y van en resultsets distintos.
si la base de datos Mysql es local, a no ser que hablemos de cientos de miles de registros la latencia para todo el resultset deberia ser admisible.

una cosa que puedes hacer es sacar un resultset con un limite del doble del Jtable (para un Jtable que visualize 30 filas, hacer un select de limit 60), y en el momento que el jtable haga un scroll por encima de cierto margen, hacer la consulta completa...

si la base de datos es remota, te vas a tener que currar una especie de 'cache' interna de filas, por ejemplo, sacar en principio solo el tamaño del Jtable, mostrarlo en pantalla (para que el usuario tenga sensacion de inmediatez), realizar otra consulta en background con 2 paginas anteriores y 2 posteriores, refrescar el Jtable (antes de refrescarlo, guarda la posicion del elemento seleccionado del Jtable, si existe alguno), y luego, conforme se avanza y retrocede en el Jtable, cuando el scroll llegue a cierto limite, realizar otra consulta SQL en background. creo que existe algun controlador JDBC que te realiza eso mismo, aunque no soy capaz de decirte su nombre, sorry.
A ver, ya esta hecho, y por ahora es sencillito. Lo he hecho con LIMIT, pero funciona de la siguiente manera:

LIMIT x,y

x -> representa el origen desde donde se muestran los registros
y -> representa cuantos registrso se muestran

Entonces quedaria:

LIMIT 0,5 (siginifica que saca los resultados del 0 al 4, empezando desd el 0)
LIMIT 10,5 (significa que saca los resultados del 10 al 14, empezando desde el 10)

Al ser todo consultas sencillas (SELECT) al final les añadia LIMIT, asi que he ido guardando la ultima consulta realizada en un String y con el replaceAll() le he ido reemplazando esa parte de texto por uno nuevo con una variable que le incrementaba o quitaba mas menos 5 (ya que los he ido sacando de 5 en 5). Asi de sencillo.

Gracias y un saludo, lo dejo abierto por si a alguien le interesa.
3 respuestas