Tal y como lo prometí la semana pasada aquí hay una versión mejorada de este video: kzbin.info/www/bejne/mYKzZYaGosiWbqM
@4SoftwareDevelopers Жыл бұрын
😎 Leyendo los comentarios veo que para los casos donde hay muchos registros algunos tienen problemas, voy a empezar a trabajar en un video sobre paginación enfocado en rest y también voy a tratar de incluir muchos registros, el video será en dos partes una parte similar a esta con una paginación simple en HTML y en una segunda parte convertimos eso a un API REST. Les agradezco mucho el apoyo que ha tenido el video, echen un ojo en el primer link de la descripción
@michel_hdez Жыл бұрын
Agradecido con tu video y tú solución. Tenía un código que se desbordaba a la hora de agregar más elementos en mi CRUD. Tu código me funciona. Muchas gracias.
@4SoftwareDevelopers Жыл бұрын
Excelente!!! Gracias por el apoyo.
@claveralvaro62452 жыл бұрын
Acabo de buscar cómo se implementan los Pageable en un resultado para un Criteria Querys. Hay algunos enfoques en Stack Overflow , el mismo Baeldung también. No estoy seguro cual sea mejor. Sería genial una opinión de gente más experimentada. Increíble video por cierto. * c suscribe *
@4SoftwareDevelopers2 жыл бұрын
Hola Claver, realmente ambos son excelentes fuentes. Nosotros mismos sacamos de ahí muchísima información no solo para el canal si no para los proyectos en general.
@sebastiansangermano16984 жыл бұрын
Operador condicional ternario se llama a lo que le dices condicional corto, muy buen video y muchas gracias por compartir tus conocimientos
@4SoftwareDevelopers4 жыл бұрын
Hola Sebastián, nos alegra saber que te gustó el vídeo saludos 😉
@kimlulu2613 жыл бұрын
excelente, explicas muy bien, me ayudaste de mucho muchas gracias.
@4SoftwareDevelopers3 жыл бұрын
Hola, me alegra mucho leer eso, saludos ;)
@iliastellaarango37165 жыл бұрын
Excelente video, muchas gracias por compartir tus conocimientos, sigue así
@4SoftwareDevelopers5 жыл бұрын
Hola Ilia, nos alegra saber que te gustó el vídeo, esperamos seguir generando contenido que sea de tu agrado.
@testtest-c4z Жыл бұрын
Hola que tal? Muy buen video, consulta. En el caso de hacer un get teniendo una api rest y la respuesta devuelva ejemplo 50.000 registros, conviene hacer una sola llamada y luego manejar la data desde el front end , hacer paginacion en el Backend y al hacer la llamada que nos diga cuantas páginas y registros tenemosbe ir haciendo una llamada por página o que otro método? Muchas gracias
@4SoftwareDevelopers Жыл бұрын
Conviene hacer una paginación, ahí en el canal tenemos un video reciente con el ejemplo, échale un ojo y te servirá.
@angelvanitas86385 жыл бұрын
cabal esto estaba buscando gracias.
@4SoftwareDevelopers5 жыл бұрын
Hola Angel Nos alegra saber que nuestro vídeo te ayudó, saludos.
@HectorSalinas-vf9ji5 жыл бұрын
Excelente, se agradece el video
@4SoftwareDevelopers5 жыл бұрын
Hola Héctor, lo hacemos con mucho gusto 😉, saludos
@marcelogabrielcabana68222 жыл бұрын
Genial, me ayudo bastante el vídeo. Tengo una duda como ordeno el pagePersona para que me quede ordenado como yo quiera?
@4SoftwareDevelopers2 жыл бұрын
Hola, en ese caso en el PageRequest.of() puedes usar al final el método ascending o descending, ejemplo PageRequest.of(page, 10).ascending(); Saludos.
@rafamartin1993 Жыл бұрын
Hola muy buenas, tengo una consulta. Cuando tengo una bbdd con muchos registros por ejemplo: ("hits" : {"total" : 15471060 } ). El getTotalPages() me devuelve 1. No se si esto se debe a que el numero total de elementos es muy grande para ser de tipo int .
@4SoftwareDevelopers Жыл бұрын
Voy a sacar un video con un ejemplo de esto más estructurado.
@JesusMatiasOficial5 жыл бұрын
Gracias por este gran video =)
@4SoftwareDevelopers5 жыл бұрын
Hola Jesús, gracias a ti también por ser parte de la comunidad 😁
@juanzuluaga81885 жыл бұрын
Que buen video, Sensei!
@4SoftwareDevelopers5 жыл бұрын
Juan! Nos alegra leer que te gustó el video. Te invitamos a que nos sigas en redes y actives las notificaciones para que te enteres de todo nuestro nuevo contenido. Esperamos seguir generando contenido de tu agrado, saludos.
@edgaravila84923 жыл бұрын
@@4SoftwareDevelopers aún falta no lo dejes asi, si la base de datos tiene muchos registros saldrá un arreglo de tipo int , para los link muy largo , te salieron 6 pues solo tienes 59 registros, ese arreglo del link debe ser mostrado de 10 en diez por cada página . Por favor has un. Video de cómo hacer eso.
@emmanuelgonzalez56212 жыл бұрын
Hola, que tal, soy nuevo en el canal. Disculpen una pregunta en que video puedo encontrar lo de la BD o el script? para seguir este buen tutorial.
@4SoftwareDevelopers Жыл бұрын
En ese link se encuentra la tabla del video gist.github.com/4SoftwareDevelopers/c964b0f45903dab860609df24100e03c
@raphauy5 жыл бұрын
Muchas gracias!!!
@4SoftwareDevelopers5 жыл бұрын
Lo hacemos con gusto 😎
@christiansanchez22172 жыл бұрын
que buen tutorial
@4SoftwareDevelopers2 жыл бұрын
Gracias por el apoyo 😉
@samueltoriz18573 жыл бұрын
Hola 4SofteareDevelopers tengo una pregunta, cuando estas creando el controlador, dentro del if(totalPage>0){ List pages = IntStrean.rangeClosed(1, totalPage).boxed().collect(Collectors.toList()); } Utilizas la palabra IntStrean o IntStream para convertirlo a un int? Se podria ocupar un Integer.ParseInt?
@4SoftwareDevelopers3 жыл бұрын
Hola, en el ejemplo, utilizamos IntStream, ya que no es un simple int es es un stream, algo similar a una lista, los stream fueron introducidos en Java 8 y tienen como objetivo mejorar la manipulación de las listas en Java, puedes conocer un poco en nuestro ebook, igual tendemos pronto un vídeo del tema.
@samueltoriz18573 жыл бұрын
@@4SoftwareDevelopers Tienes algun video tutorial para paginacion despues de hacer algun tipo de filtracion? Estoy trabajando con IFilter?
@4SoftwareDevelopers3 жыл бұрын
Hola, por el momento no tenemos un vídeo así
@ronalmaihuire26704 жыл бұрын
#pregunta que diferencia ahi si hago la paginación con javascript y lo incorporo ami proyecto... seria buena practica sabien que hoy en dia puedes encontrar plantillas muy completas que vienen con su paginacion ya todo echo y su buscador por filtros .... solo seria cuestion de incorporarlo al proyecto.
@4SoftwareDevelopers4 жыл бұрын
Hola Ronal, a través de Javascript usarías peticiones http tipo Ajax puede que sea necesario hacer algunos cambios en la lógica pero si lo puedes implementar en el proyecto que desees hacerlo, saludos 😉
@marioarmandoseguraalbarrac18913 жыл бұрын
Pregunta, la arquitectura de las carpetas que me aparece cuando descargo el proyecto de l pagina de spring es diferente, le aparecen menos carpetas y no tiene los paquetes que se ven en el video, gracias¡
@4SoftwareDevelopers2 жыл бұрын
Hola, disculpa la demora, KZbin no avisa, saludos.
@FellTheSky4 жыл бұрын
El método findAll(pageable) me tira error en el ide ("The method findAll(Sort) in the type JpaRepository is not applicable for the arguments (SpringDataWebProperties.Pageable)") Si trato de acceder desde el postman: ("Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.Error: Unresolved compilation problem: The method findAll(Sort) in the type JpaRepository is not applicable for the arguments (SpringDataWebProperties.Pageable) ] with root cause"
@4SoftwareDevelopers4 жыл бұрын
Hola, qué versión de Spring Data estás usando ?
@FellTheSky4 жыл бұрын
@@4SoftwareDevelopers Genio, gracias por responder pero lo pude resolver. Como un tonto después de revisar todo el proyecto me di cuenta que tenía una anotación de PageResponse de otra librería. Gracias por responder igual
@FellTheSky4 жыл бұрын
Te hago otra consultita por ahí me podes guiar un poquito (es para un examen en mercado libre). COmo hago para mandar un parámetro "opcional" en el mapping?. Lo que me piden es que el usuario pueda conectarse a /Objeto?page=1&size=50&user_id=2 O a /Objeto?page=1&size=50. Lo estuve probando pero no le puedo agarrar la mano, igual muchas gracias por el tutorial!
@4SoftwareDevelopers4 жыл бұрын
Excelente que lo hayas logrado por tu cuenta 😁 bien ahí crack.
@4SoftwareDevelopers4 жыл бұрын
Puedes simplemente validar si el parámetro es diferente de vacío y diferente de null, si no es así puedes enviar algún valor por defecto.
@melchiah6603 Жыл бұрын
El detalle es que se desborda de la pantalla, cuando tienes por ejemplo, 2000 registros. Sabes cómo controlar esto?
@4SoftwareDevelopers Жыл бұрын
Voy a sacar un video con un ejemplo de esto más estructurado.
@melchiah6603 Жыл бұрын
@@4SoftwareDevelopers por favor. Te lo agradecería mucho, ys qué he intentado y no me sale.
@4SoftwareDevelopers Жыл бұрын
@@melchiah6603 Mira el comentario fijado, ya es un hecho.
@4SoftwareDevelopers Жыл бұрын
Listo, ya estrenamos el video prometido: kzbin.info/www/bejne/mYKzZYaGosiWbqM
@TheImsebas4 жыл бұрын
Usando native query como se tendria que implementar
@4SoftwareDevelopers4 жыл бұрын
En ese caso tendrías que implementar el repositorio basado de la siguiente manera @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1 ORDER BY ?#{#pageable}", countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1", nativeQuery = true) Page findByLastname(String lastname, Pageable pageable); El #{#pageable} te permite seguir manejando la lógica a través de las herramientas que te da Spring Data, esperamos te sirva, saludos 😁
@Testuy6065 жыл бұрын
Hola que tal. Hice como vs, salio la paginacion. Pero al momento de volver al inicio no se desaparecen los botones anterior y ssiguiente. Osea no se ocultan !
@4SoftwareDevelopers5 жыл бұрын
Hola, puede que sea un bug de nuestro desarrollo, vamos a revisarlo y se actualizará el código en GitHub en caso de que sea necesario, gracias por comentar, trata de resolverlo tu mismo, así podrás aprender mucho más 😁
@Testuy6065 жыл бұрын
@@4SoftwareDevelopers Ok gracias por resp tan pronto. Muy buenos videos !
@4SoftwareDevelopers5 жыл бұрын
Con Gusto Black, siempre tratamos de ayudar a la comunidad
@nowen21042 жыл бұрын
se llama condicional ternario
@4SoftwareDevelopers2 жыл бұрын
Gracias, en ese momento lo había olvidado, saludos 😉
@nowen21042 жыл бұрын
@@4SoftwareDevelopers a usted, muy amable. Con sus videos me sacó del barro para un trabajo que estoy con laravel y estoy consumiendo unas apis, muchas gracias por le agradezco por la explicación de los genéricos ayudan muchísimo y riende el desarrollo. De nuevo muchas gracas desde Colombia
@4SoftwareDevelopers2 жыл бұрын
Tu comentario nos alegra muchísimo, es excelente leerlo y esperamos poder seguir ayudándote y contando con tu apoyo, saludos 😉
@nowen21042 жыл бұрын
@@4SoftwareDevelopers claro yo soy desarrollador de software y si puedo aportarles en algo me cuenta, usted sabe que este mundo es muy grande y por más que uno sepa, menos sabe.
@Testuy6065 жыл бұрын
Hola gente vengo a mostrar una solución que ocurre cuando tenemos una pagina principal como Welcome y agregamos en otro html este ejercicio de paginacion . El tema es q con una pag principal los botones anterior y siguiente no desaparecen al volver a la pag , esto se soluciona agregando th:if="${anterior != null}" antes del hreft que envía la petición a anterior y a siguiente. El cod final para estos botones queda algo así. Boton anterior = Ant Boton siguiente = Sig
@4SoftwareDevelopers5 жыл бұрын
Excelente trabajo, felicitaciones 👏
@mlizano67934 жыл бұрын
"reposítory"... viejo sería importante ya que estan haciendo videos enfocados a un publico profesional, que mejoren su nivel de inglés, porque es pésimo... por todo lo demás, muy bien!
@4SoftwareDevelopers4 жыл бұрын
Hola M, lo hemos mejorado 😁 y seguimos haciéndolo, no somos nada si no estamos enfocados en mejorar en todos los aspectos, saludos 😉
@mlizano67934 жыл бұрын
@@4SoftwareDevelopers perfecto
@Sarv92082 жыл бұрын
Mis query @Query(value = "select * from estudiante as e where e.nombre like %:nombre% #pageable ", nativeQuery = true) Page estudiantePorFiltro(String nombre, PageRequest pageable); @Query(value = "select * from estudiante as e inner join (select * from respuesta as r where r.fecha = :fecha) as rs on e.idusuario = rs.idusuario #pageable ", nativeQuery = true) Page estudiantePorFechaRespuesta(Date fecha, PageRequest pageable); @Query(value = "select c1.idusuario, c1.nombre from (select * from estudiante as e where e.nombre like %:nombre%) as c1 inner join (select * from respuesta as r where r.fecha = :fecha) as c2 on c1.idusuario = c2.idusuario #pageable ", nativeQuery = true) Page estudiantePorNombreYFecha(String nombre, Date fecha, PageRequest pageable); Error 2022-06-25 15:12:01.207 INFO 9372 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2022-06-25 15:12:01.521 DEBUG 9372 --- [nio-8080-exec-1] org.hibernate.SQL : select * from estudiante as e where e.nombre like ? #pageable order by e.idusuario asc 2022-06-25 15:12:01.524 TRACE 9372 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [%Serg%] 2022-06-25 15:12:01.654 WARN 9372 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703 2022-06-25 15:12:01.654 ERROR 9372 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: column "pageable" does not exist Position: 56 2022-06-25 15:12:01.781 ERROR 9372 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause org.postgresql.util.PSQLException: ERROR: column "pageable" does not exist Position: 56
@4SoftwareDevelopers2 жыл бұрын
Ese pegeable de ahí no aplica cuando le pones el NativeQuery en true