20260219 MongoDB_5 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
By código
00:00:00
Grater
00:00:06
Dan
00:00:09
En inglés lo he escrito bien
00:00:10
Grater Dan, es así
00:00:13
Bueno, es que código no es un
00:00:14
Bueno, pero los strings tienen
00:00:21
Orden alfabético, entonces funcionaría
00:00:23
También, yo creo
00:00:25
Porque tienen un orden natural
00:00:26
Bueno, un orden natural no, un orden puesto en el comparable
00:00:28
Claro
00:00:31
Entonces
00:00:31
Entonces, jugando con el nombre
00:00:33
Se pueden crear muchas consultas propias
00:00:36
Que el código sea mayor que no sé qué
00:00:38
Y así un listado de cosas
00:00:41
Que uno se puede poner a buscar, a ver lo que tiene
00:00:43
Vale, particularidad de Mongo
00:00:45
Que dentro
00:00:47
Tenemos subdocumentos
00:00:49
Y a raíz de subdocumentos
00:00:51
Que
00:00:53
Las bases relacionales están en tablas apartes
00:00:54
Aquí lo tenemos dentro
00:00:57
Entonces nosotros podemos buscar
00:00:59
Por el
00:01:01
Los documentos que tengan
00:01:02
En un array que cumpla no sé qué
00:01:04
Los participantes, por ejemplo
00:01:07
Entonces, ¿recordáis que cuando
00:01:09
Estábamos viendo las condiciones
00:01:10
Puedes buscar directamente su documento
00:01:12
En la lista de sus documentos
00:01:15
Bueno, sí, pero para eso tienes el find
00:01:17
Y luego ya en el servicio
00:01:23
Devuelves la
00:01:25
Claro, lo devuelves
00:01:26
vale, entonces aquí por ejemplo
00:01:28
recordáis, teníamos
00:01:30
es que esto que he metido
00:01:32
a ver, alguno que haya metido aquí con cosas
00:01:33
este
00:01:36
por ejemplo
00:01:37
que aquí tengo un array simple
00:01:42
de participantes
00:01:44
y otro array de objetos
00:01:45
pues recordad que la búsqueda
00:01:48
por array
00:01:50
simples, pues aquí podíamos hacer un documento
00:01:52
que era, búscame
00:01:54
aquellos en los cuales
00:01:56
participantes
00:01:58
este
00:02:02
es la consulta que me devuelve
00:02:08
un documento en los cuales
00:02:11
dentro de su array
00:02:13
participantes hay alguno que se llame
00:02:15
así
00:02:17
alguno que se llame así
00:02:17
este por ejemplo, si yo aquí lo filtro
00:02:20
los que me han devuelto tienen
00:02:24
a este
00:02:27
Vale
00:02:27
Los que me ha devuelto tienen a este
00:02:30
Sí, cualquiera de ellos
00:02:32
Vale, entonces esto también lo podemos
00:02:34
Poner como método propio
00:02:37
¿Vale? Como método propio
00:02:38
Pues sería aquí
00:02:41
Por ejemplo
00:02:42
Pues cógeme todas
00:02:44
Las tareas en las que
00:02:46
Participe
00:02:49
Find by
00:02:50
Participantes
00:02:55
Containing
00:02:59
No
00:03:00
Del propio nombre, del containing
00:03:04
Ya saldría
00:03:06
Claro, tiene un montón de juegos
00:03:08
Con el nombre, vale
00:03:12
Este creo que es así, lo tengo aquí apuntado
00:03:13
Para no confundirme
00:03:16
Sí, vale
00:03:17
Entonces, que queremos hacer and de cosas
00:03:20
Pues también
00:03:24
Por ejemplo, quiero encontrar
00:03:26
A ver, aquí
00:03:28
Todas las
00:03:29
Tareas en las que participe
00:03:32
Alguien
00:03:35
Que
00:03:35
Aquí en tarea que tenía yo
00:03:37
En las que participe alguien
00:03:40
Que se llamen de tal manera
00:03:42
Claro, entonces, pero es el and de dos cosas
00:03:45
¿Vale? Pues puedo poner el and
00:03:49
A lo bestia
00:03:51
Así, de esta manera
00:03:51
Este sería
00:03:54
Devuélveme todas las tareas
00:04:02
Tarea
00:04:04
find
00:04:07
by título
00:04:10
hemos dicho
00:04:11
se llama título porque es encontrar
00:04:12
por título, que la otra es
00:04:15
and, que el participante
00:04:17
lo contenga, pues este es
00:04:20
participantes containing
00:04:21
me lo hago ahí con el and en el nombre
00:04:22
si, por el orden del and
00:04:25
esto lo podríamos probar
00:04:34
haciendo el servicio correspondiente
00:04:42
metiéndolo en el método y funcionaría
00:04:44
que ya lo he probado yo, lo podéis creer
00:04:46
que aún así queremos hacer alguna query extraña
00:04:47
algo que no encontramos un método aquí
00:04:51
que ya es raro, que queramos hacer una consulta
00:04:53
que no podamos adaptarla a un método
00:04:55
pues nos hacemos nuestra query
00:04:57
a ver, no sabría decirte
00:04:59
normalmente, no, una cosa es bases de datos
00:05:16
orientadas a documentos
00:05:18
y otras las no SQL
00:05:19
no sabría decirte
00:05:22
si todas son consideradas
00:05:24
orientadas a documentos
00:05:26
no sabría decirte
00:05:28
pero con la generación
00:05:30
sí, cuando
00:05:31
cuando salió la alternativa
00:05:34
las bases de datos SQL
00:05:37
la alternativa vino de la mano de orientadas a
00:05:37
documentos tipo XML
00:05:40
tipo JSON
00:05:42
claro, existía
00:05:43
la base de datos
00:05:46
que en su momento tuvo cierta
00:05:47
exist
00:05:50
era como MongoDB pero con documentos XML
00:05:50
Usaba el lenguaje de consultas
00:05:54
Pues el xpad
00:05:57
Y todo eso
00:05:57
Vale
00:05:59
Entonces aquí por ejemplo
00:06:01
¿Qué podemos dejar para una consulta?
00:06:03
Los or, por ejemplo un or
00:06:05
Podemos dejarlo porque
00:06:08
El or no sé si existe
00:06:09
Como título propio
00:06:14
Como método propio
00:06:15
Vamos a preguntárselo
00:06:16
¿A quién? ¿A este?
00:06:19
Nombre del método
00:06:22
En
00:06:42
Bongo repositorio
00:06:42
Voy a poner que es más rápido
00:06:49
A ver, sí
00:06:50
Igual que podemos el on, podemos poner el off
00:07:04
Vale, entonces es que se me ocurren muy pocas
00:07:06
Consultas
00:07:09
O cosas que no puedas hacer
00:07:10
Y quien dice find dice
00:07:13
Delete, también puedes borrar
00:07:14
Con ese criterio
00:07:17
Entonces, aún así tú quieres hacer una consulta
00:07:18
en particular, pues la plantas
00:07:21
la plantas aquí en la query, por ejemplo, a ver que ejemplos
00:07:23
nos da, pues eso, esto es
00:07:25
un or de los dos
00:07:27
un or, bueno
00:07:29
y puedes mezclar, mirad, se puede
00:07:30
mezclar and y or
00:07:35
se puede mezclar
00:07:37
and y or
00:07:39
pero según él, que nos creemos
00:07:41
que sea verdad
00:07:43
el and y la prioridad
00:07:44
como las sumas y las
00:07:46
multiplicaciones
00:07:50
recordad siempre la prioridad aritmética
00:07:51
multiplicaciones son and
00:07:53
sumas son or
00:07:55
siempre tiene más prioridad las multiplicaciones
00:07:57
respecto a las sumas
00:07:59
vale, ya que estamos
00:08:00
nos dice algo más interesante
00:08:04
usando query más control
00:08:05
vale
00:08:09
bueno, pues si aún así
00:08:10
esto de criterio es otra forma de hacer criterios
00:08:13
diferente de un documento que hemos pasado
00:08:15
directamente porque es que no tenemos tiempo
00:08:17
vale, pero tú puedes hacer
00:08:19
un objeto criterio con un documento y tienes
00:08:21
muchísima más flexibilidad
00:08:23
Puedes hacer muchas más cosas
00:08:24
¿Vale?
00:08:26
Bueno, pues entonces
00:08:31
Si nosotros queremos hacer nuestro propio criterio
00:08:32
Podemos hacerlo
00:08:33
Por ejemplo, aquí
00:08:34
¿Qué consulta se nos ocurre con las tareas
00:08:35
Que nos pueda
00:08:37
Apetecer hacer?
00:08:38
Pues
00:08:48
Todas aquellas que
00:08:49
Item que tiene
00:08:51
Que tengan un
00:08:55
Item con un nombre
00:09:02
En concreto
00:09:03
Todas que tengan un ítem, que sea lo que sea
00:09:05
Pues entonces esto sería
00:09:07
A ver, si nos sale de corrido
00:09:08
Esto
00:09:11
El documento
00:09:12
Se llama ítems
00:09:15
Pues sería ítems
00:09:17
¿Dónde estamos?
00:09:19
Ah, no, aquí
00:09:21
Sería
00:09:22
Ítems, y como ítems son documentos
00:09:24
Pues tengo que hacer aquí
00:09:28
El element
00:09:29
¿Verdad? Que tenga algún ítem
00:09:30
Que cumpla
00:09:33
Elen match
00:09:35
De qué
00:09:37
De nombre
00:09:40
Item nombre
00:09:43
Se llama nombre
00:09:48
Nombre
00:09:49
Y aquí el parámetro
00:09:51
Que sea
00:09:55
El parámetro
00:09:55
Como lo ponemos
00:09:57
Recordad en JPA
00:09:58
Cuando poníamos la query en JPA
00:10:00
¿Recordáis cómo lo poníamos?
00:10:02
Dos puntos
00:10:07
Dos puntos y un nombre
00:10:08
¿Vale? Dos puntos y un nombre
00:10:09
La interrogación la poníamos en JDBC
00:10:11
Pues aquí ponemos
00:10:14
Interrogación
00:10:17
Si es el primer parámetro, cero
00:10:19
Si es el segundo, uno
00:10:22
Si es el segundo, dos
00:10:23
¿Vale?
00:10:25
Aquí solo tenemos uno
00:10:27
Pues esto de aquí
00:10:29
Pero ¿quién lo decide?
00:10:30
porque al final esos son un montón de
00:10:35
ya hay una cosa que es medio establecida
00:10:37
que es lo primero que se cree
00:10:39
es JPA
00:10:41
no, pero JPA lo primero que se creó, hace el favor
00:10:41
le faltó
00:10:45
la botella lanzada
00:10:49
sería JDBC en todo caso
00:10:50
ya, pero JDBC lo hizo muy bien
00:10:53
puso interrogaciones, lo que yo no sé es por qué JPA
00:10:57
JPA puso dos puntos
00:10:59
necesitaba darle un nombrecito
00:11:01
Pero podría haber puesto interrogación y el nombrecito
00:11:03
Y este ha vuelto a la interrogación
00:11:06
Pero no le gusta nombrecito
00:11:08
Sino posicional
00:11:11
Exacto
00:11:12
Entonces aquí ya podríamos poner
00:11:17
Pues devuélveme todas las tareas
00:11:19
O bórrame si pongo delete
00:11:22
Lo que sea
00:11:23
Find
00:11:24
By
00:11:28
Nombre de ítem
00:11:33
Entiendo que sí
00:11:36
No te lo puedo jurar por Dios ni por la Virgen
00:11:51
Pero entiendo que sí
00:11:54
¿Vale? Entonces aquí el nombre de ítem
00:11:55
Pero nombre ítem
00:11:58
No tenemos ningún campo que sea nombre ítem
00:12:00
Podríamos tener uno que fuera nombre
00:12:01
Y un subcampo ítem
00:12:04
Entonces ahí tendríamos confusión
00:12:05
Pero
00:12:07
En este caso es nombre ítems
00:12:08
En todo caso, con lo cual aquí no habría
00:12:11
Sí, este está ponciado
00:12:13
Y un query dice, es que tú quieres esto
00:12:19
Claro, no te lo voy a hacer yo si tú ya me lo has dado hecho
00:12:21
Vale
00:12:24
Vale
00:12:25
El en match
00:12:29
Eso, muy bien
00:12:34
Vale, eso sí, he puesto bien
00:12:36
La consulta, no lo sé, vamos a probarla
00:12:38
Vamos a probarla aquí
00:12:40
A ver si la he puesto bien
00:12:41
Vamos a ponerla con un
00:12:43
Nombre de ítem
00:12:49
Le voy a poner
00:12:50
Crear controller
00:12:53
Ah, bueno, claro
00:12:55
Es que como aquí he mezclado, he hecho de todo
00:12:59
A ver si tengo aquí alguna que sea nombre
00:13:01
Ah, espérate, que es que
00:13:03
Sí, pero bueno
00:13:07
Claro, que se llama
00:13:08
Descripción en tarea
00:13:10
Aquí, o sea, en
00:13:12
No, es que se está llamando nombre
00:13:13
Vale, vale, no es que hayamos mezclado
00:13:15
Es que yo esta base de datos es de
00:13:18
De otro proyecto
00:13:19
Y estos son antiguos, entonces
00:13:21
Seguro que tengo alguna por nombre
00:13:23
Y si no, voy a poner esta primera
00:13:27
Nombre
00:13:29
Empezar, venga, esta
00:13:41
Entonces, a ver si me encuentra
00:13:44
Alguno que nombre
00:13:47
Empezar
00:13:49
Y porque
00:13:51
¿Qué me falta?
00:13:56
¿Me falta cerrar una?
00:14:00
No, no
00:14:05
Nombre empezar
00:14:07
Es que me falta una llave
00:14:10
Vale, entonces con nombre empezar
00:14:11
Eje, efectivamente
00:14:15
Me devuelve el único documento
00:14:17
Que tiene un ítem
00:14:20
Cuyo nombre es empezar
00:14:23
Seguramente
00:14:25
Por eso siempre es buena idea probarlo aquí
00:14:28
Porque aquí
00:14:29
No, sí
00:14:31
Vale, esto está bien
00:14:33
Vamos a probar esta
00:14:38
Entonces
00:14:40
Si yo ya tengo el método del repositorio
00:14:44
Ya podría hacerme aquí una tarea
00:14:47
Y hombre, vamos a hacer una tarea
00:14:49
De que o
00:14:58
Porque esto ya es lo último que vamos a hacer
00:14:58
Y ya no
00:15:03
Entonces, hombre, ya que estamos
00:15:04
GetTareas
00:15:06
Por
00:15:09
GetTareas
00:15:10
Por
00:15:13
NombreItem
00:15:14
GetTareas
00:15:17
Por nombre de item
00:15:19
StreamNombreItem
00:15:20
Entonces
00:15:23
Primero cojo las tareas
00:15:24
List de tarea
00:15:26
Y list de tarea va a ser
00:15:28
Estas tareas va a ser
00:15:32
Mi repo punto
00:15:36
El método que me falta
00:15:37
Find by nombre item
00:15:39
Era esta, ¿verdad?
00:15:42
La que he hecho
00:15:43
Vale, ya tengo el método del servicio
00:15:44
Pero vamos a devolver solo de esas tareas
00:15:46
Devolver las tuneadas
00:15:49
Entonces nos vamos a hacer la clase
00:15:50
El record tarea DTO
00:15:53
El record tarea DTO
00:15:55
Me hago
00:15:59
Estoy aquí, en mi DTO
00:16:00
Me hago el record
00:16:03
Tarea DTO
00:16:06
Entonces de esta consulta
00:16:10
Quiero mostrar solo
00:16:12
Quiero mostrar solo
00:16:13
El título
00:16:16
La descripción y los participantes
00:16:19
Pero una sola línea
00:16:21
No como string
00:16:22
Entonces de mi tarea DTO
00:16:24
Quiero mostrar
00:16:29
El título
00:16:30
La descripción
00:16:32
Descripción
00:16:37
y el stream con los participantes
00:16:39
uno tras otro
00:16:41
participantes
00:16:42
si pero mire teo
00:16:45
yo lo tuneo y lo cambio como quiera
00:16:47
los voy a poner uno tras otro
00:16:48
entonces ahora voy a hacer la conversión
00:16:50
vale pues entonces ahora que quiero hacer con este
00:16:52
pues tareas
00:16:57
mi tareas
00:16:57
vale stream
00:17:00
cada elemento de mi lista tareas
00:17:05
lo quiero convertir
00:17:09
en un
00:17:13
Hasta luego
00:17:14
Chao
00:17:20
Cada elemento de mi lista de tareas
00:17:21
Lo voy a convertir en un DTO
00:17:24
Entonces
00:17:27
Para eso me voy a hacer
00:17:28
La lista de participantes
00:17:30
Que es
00:17:32
De mi X
00:17:33
Me cojo los participantes
00:17:36
Los serializo
00:17:38
Los
00:17:41
Colecto
00:17:42
Los pongo todos juntos
00:17:44
y me hago esto
00:17:46
joining con el delimitador
00:17:48
esto de aquí
00:17:54
vale, a ver, ¿qué estamos
00:17:55
haciendo aquí?
00:18:00
vale, a ver
00:18:03
el método collect
00:18:06
es un método que estaba pensado
00:18:07
para coger
00:18:10
todos los elementos
00:18:12
e integrarlos en una
00:18:13
única variable, en mi caso va a ser una variable
00:18:16
string
00:18:18
este podemos hacer el colet entero
00:18:18
que al principio del curso lo hicimos
00:18:38
es una bifunción
00:18:39
un colector, el elemento
00:18:42
y luego como integro
00:18:45
el elemento al colector
00:18:47
el colector podría ser un stream builder
00:18:48
pero si lo que queremos es que es una
00:18:50
acción que se hace muy a menudo
00:18:52
tengo un montón de elementos y poderlos todos juntos
00:18:54
en un string, es decir, concatenarlos
00:18:56
pues eso lo puedo hacer directamente
00:18:58
pasándole a coler
00:19:01
esto
00:19:03
que esto ya me da esa
00:19:04
si yo le paso a coler esto
00:19:05
esto ya directamente
00:19:08
me hace la acción de
00:19:10
conectármelos todos
00:19:12
en un único string con el separador
00:19:14
que a mí me dé la gana poner ahí
00:19:16
¿Pero tiene que ser string?
00:19:17
No, lo hará el string
00:19:20
Claro, hará el string
00:19:21
vale, entonces con esto ya tengo a todos los partidos
00:19:23
de una fila, pues esto se lo voy
00:19:26
a setear al tarea DTO
00:19:28
entonces
00:19:30
me voy a hacer aquí un
00:19:32
estoy haciendo un montón de líneas
00:19:34
que podríamos ahorrarnos, pero bueno, para que quede claro
00:19:38
este tarea DTO
00:19:40
sería un tarea
00:19:44
DTO
00:19:46
Sí, o sea
00:19:48
¿Qué pasa?
00:19:55
Ah
00:19:58
Vale, entonces sí, lo que pasa es que lo estoy separando
00:19:58
Para ir haciendo
00:20:02
Claro, entonces a este ya le puedo hacer
00:20:03
El t de teo le hago
00:20:06
El
00:20:08
Descripción
00:20:09
No, no era descripción, era participantes
00:20:12
Participantes
00:20:14
Le pongo esto
00:20:16
Todo de aquí
00:20:18
Todo esto de aquí
00:20:19
Lo meto aquí
00:20:21
Con lo cual este me
00:20:23
Sobra
00:20:31
Vale
00:20:32
Aunque
00:20:34
Aquí algo
00:20:36
Ah, vale
00:20:38
Pero
00:20:43
Vale, pero aún así aquí me falta algo
00:20:44
Colet
00:20:47
Aquí tendré que ir sacando
00:20:51
Colet
00:20:53
Este de aquí
00:20:54
Pero este ya es un string
00:20:57
Es uno solo
00:21:02
Claro, pero get participantes
00:21:04
Pero es que
00:21:06
La propiedad participantes de este
00:21:08
Es un string
00:21:11
Claro, entonces
00:21:11
No, es un string
00:21:14
Tarea de to
00:21:17
Participantes
00:21:17
Entonces el error me está viniendo
00:21:19
Aquí, ah, porque constructor
00:21:23
sin parámetros, el constructor sin parámetros
00:21:25
no lo tiene el record
00:21:27
si, bueno, pero
00:21:27
claro, si, si, ya, no, pero me refiero que
00:21:34
aparte, ah, si
00:21:36
o sea, tiene constructor sin parámetros el record
00:21:38
bueno, pues vamos a seguir poniendo
00:21:40
este ya está, entonces ahora me falta
00:21:41
el tdto.descripción
00:21:44
este es igual a
00:21:47
x.getDescripción
00:21:48
y el
00:21:50
tdto.titulo
00:21:52
Este es
00:21:56
X.get
00:21:58
Título
00:22:01
Vale, el DTO ya lo tengo construido al completo
00:22:04
Entonces ya lo puedo devolver
00:22:07
Para mi map
00:22:08
Devuelvo mi TDTO
00:22:10
Vale
00:22:13
Entonces esto ya está
00:22:14
Y ahora
00:22:16
Este es
00:22:17
Tareas.string
00:22:22
Esto me va a tu list
00:22:25
que me da una list
00:22:26
de tareas de teo y este lo devuelvo
00:22:28
y este es el que devuelvo
00:22:31
vale, y me sigue
00:22:35
saliendo esto, pero porque
00:22:37
el record no tiene tarea de teo sin parámetros
00:22:39
era lo que yo os decía, que me estáis liando
00:22:41
pero esto es lo que tiene parámetros a los atributos
00:22:43
claro
00:22:45
es lo que quiero hacer
00:22:47
claro, por eso digo que como tiene sin parámetros
00:22:48
que entonces tengo que
00:22:51
hacerlo con estos parámetros
00:22:53
claro, pero es lo que estabais diciendo desde el principio
00:22:54
yo también
00:22:57
Claro, es que como tú me has dicho
00:22:57
Pero si lo ves en multicomas te quitas
00:23:00
Será que el récord tiene sin parámetros
00:23:01
Pero no tiene
00:23:03
El récord tiene constructor sin parámetros
00:23:04
Pues aquí porque me dice que está indefinido
00:23:08
¿Seguro que tiene sin parámetros el récord?
00:23:10
Yo creo que tiene solo con parámetros
00:23:20
Getter
00:23:22
Setter con el nombre cambiado
00:23:24
Tu string has equals
00:23:26
Y lo has hecho récord, ¿no?
00:23:27
Lo has hecho class
00:23:30
Pues no sé
00:23:31
Bueno, pues entonces yo aquí lo que tengo que hacer
00:23:33
Es un new
00:23:37
Bueno, da igual
00:23:37
Como no me deja
00:23:43
Hacer un costo sin parámetros
00:23:45
Me hago este y ahora ya le meto las cosas
00:23:46
Que las cosas son
00:23:48
¿Por qué orden van?
00:23:50
Van por título, descripción y participantes
00:23:52
Pues entonces este
00:23:55
Aquí
00:23:56
Siguiente parámetro
00:23:59
Descripción
00:24:02
Aquí
00:24:04
Y siguiente
00:24:09
Participantes, que es este
00:24:11
Aquí
00:24:13
Con lo cual, esto me sobra
00:24:20
Y este de aquí también me sobra
00:24:23
Vale, ya está
00:24:25
No, lo he cambiado de sitio
00:24:28
Espera, voy a bajar el coleta aquí abajo
00:24:31
Para que se vea mejor
00:24:34
Es decir, me he creado
00:24:36
Un nuevo para cada tarea
00:24:38
Me he creado una nueva tarea
00:24:40
DTO con sus parámetros
00:24:42
Con su título, con su descripción
00:24:44
Y con sus participantes propuestos en fila
00:24:46
Es lo que he hecho, ¿vale?
00:24:49
Crearme un DTO y que esa lista de tareas
00:24:50
Devuelva al servicio
00:24:52
Y ahora el controller lo devuelve
00:24:53
¿Vale?
00:24:54
Venga, pues ahora al controller
00:25:01
Que este sí que será un get
00:25:04
Controller, ponemos aquí los get
00:25:06
Al principio todos
00:25:12
GetMapping
00:25:13
URL no ambigua
00:25:17
Esto era
00:25:20
Tareas
00:25:21
No, pero hombre, eso no lo va a poner la URL
00:25:23
Tareas por nombre de
00:25:28
De ítem
00:25:29
Venga, vamos, yo que sé
00:25:31
Tareas nombre es un parámetro que es el
00:25:34
El ítem en particular
00:25:37
Este
00:25:39
Por nombre de ítem
00:25:40
Entonces
00:25:43
Este método me va a dar una lista de
00:25:44
Tarea DTO
00:25:47
Tareas by item
00:25:49
Porque se me ha olvidado
00:25:55
Tareas item
00:26:00
Y este tiene una variable de path
00:26:03
Path variable
00:26:05
Que es item
00:26:07
Y este lo que tiene que hacer ahora ya
00:26:12
Es devolver
00:26:18
Devolver del servicio
00:26:19
getTareas
00:26:23
por nombre item
00:26:25
pasándole item
00:26:27
tengo que poner el nombre de la clase
00:26:29
efectivamente
00:26:35
y aquí
00:26:36
esto no aplicable
00:26:38
para item, ah bueno claro
00:26:41
es que esto es un string
00:26:43
perdón, esto es un string
00:26:44
vale, bueno
00:26:46
creemos que no nos hemos equivocado pero no sabemos
00:26:48
a esta url
00:26:51
recogerá este nombrecito
00:26:53
que hay aquí
00:26:55
llamará a getTareas
00:26:56
con ese nombrecito
00:26:59
este de aquí llama al método
00:27:00
con la query que nos hemos inventado
00:27:08
a ver si
00:27:10
ese método con la query funciona
00:27:12
me da las tareas
00:27:14
y yo las mapeo
00:27:15
¿Cómo lo has arreglado, profe?
00:27:17
¿Cómo he arreglado el qué?
00:27:20
Lo del mapeo
00:27:21
¿A este método o al otro?
00:27:22
No sé a cuál te refieres
00:27:27
Bueno, o sea, es que como no tenía
00:27:28
O me decía que no tenía
00:27:31
Constructor
00:27:33
Sin parámetros
00:27:35
Pero a ti sí te lo encuentra, dices
00:27:36
Sí, el tema es que estabas haciendo
00:27:39
Que estabas pasando los parámetros
00:27:41
A los atributos
00:27:43
No, estaba seteando
00:27:45
Me había creado
00:27:47
Una tarea T y seteaba
00:27:50
Lo estaba haciendo bien
00:27:51
Si hubiera tenido
00:27:53
Claro, pero el nombre no se llama set
00:27:54
en los récords no se llama set
00:27:57
se llama punto el nombre sin más participante
00:28:00
estaba haciendo un seteo
00:28:02
me estaba instanciando sin parámetros
00:28:03
y luego seteando, lo estaba haciendo bien
00:28:06
si hubiera tenido constructor sin parámetros
00:28:07
pero
00:28:09
me dice que no tiene
00:28:11
y yo juraría
00:28:13
que no tienen
00:28:15
los récords dan
00:28:17
constructores
00:28:19
sin parámetros
00:28:22
no
00:28:24
Entonces el problema era ese
00:28:28
Que no tenía constructores con parámetros
00:28:30
Pero estaba haciendo el set
00:28:32
El set claro que lo tiene
00:28:34
¿Cómo que no?
00:28:36
Pero si es lo que tenía justo hecho
00:28:42
Pues ese era mi problema
00:28:44
Tarea de TOT
00:28:46
Igual a new
00:28:50
Tarea de TOT
00:28:52
Esto es lo que tenía
00:28:54
Y me decía, este constructor no existe
00:28:55
Porque no tiene
00:28:59
Constructor sin parámetros
00:29:00
Y luego, si hubiera existido
00:29:02
Yo puedo setear sin problemas
00:29:05
Porque para eso están los setters
00:29:06
Lo que pasa es que los setters de los records
00:29:08
No tienen el set antes
00:29:10
Ah, perdón, perdón, perdón
00:29:12
Que no tienen, no, no, no
00:29:15
No tienen set, los records no tienen set
00:29:17
Solo tienen get
00:29:18
Que sí, que sí, que sí, ahora te entiendo lo que decías
00:29:19
Claro, o sea, no tienen set
00:29:22
Solo tienen get
00:29:24
¿vale? entonces yo, vale
00:29:25
sí
00:29:26
tienes razón
00:29:28
efectivamente lo que estaba puesto después
00:29:29
era una cosa absurda
00:29:33
tienes razón, pero esto
00:29:35
lo que no entiendo es por qué te va a ti
00:29:37
o sea, lo tengo delante
00:29:39
¿has creado un reto?
00:29:42
sí
00:29:46
¿no?
00:29:46
no sé todo
00:29:47
la magia de la informática
00:29:47
y seguro que es
00:29:59
esa tarea de peor, ¿verdad?
00:30:03
o sea, tú lo abrimos por aquí
00:30:04
y ahí, ¿verdad?
00:30:06
no lo entendería
00:30:10
pero la JDC
00:30:11
es que lo han tenido
00:30:12
que han debido actualizar ahora
00:30:17
hace 15 minutos
00:30:19
que sí, que sí
00:30:21
que lo otro ha sido
00:30:24
escribir a lo tonto
00:30:26
sin pensar
00:30:29
que estaba escribiendo sin pensar
00:30:30
y lo tengo una burrada, efectivamente
00:30:32
no se puede setear
00:30:34
una pregunta
00:30:37
¿se usan como récord o se usan también como objetos?
00:30:38
no, no, no
00:30:41
si quieres lo básico, un récord
00:30:42
porque es muy cómodo
00:30:44
claro, si quieres luego además hacer código
00:30:45
hacer otro tipo de cosas
00:30:48
lo añades
00:30:50
es que tiene un Java trucado
00:30:51
pues no lo sé
00:30:52
Es que no sé, no sé qué ha pasado
00:30:56
A ver si tú estás en una versión
00:30:58
Porque claro, las versiones de Java
00:31:00
Van metiendo cositas
00:31:03
Entonces vete tú a saber
00:31:05
Si tú tienes, por ejemplo
00:31:07
Las últimas versiones de Java
00:31:08
Ya no hace falta poner el public static void main string
00:31:10
No
00:31:13
Puedes poner el main a palo seco
00:31:14
Por ejemplo
00:31:17
Claro, entonces
00:31:18
Las últimas versiones de Java
00:31:21
Van metiendo cositas
00:31:22
Que de repente te dejan así un poco como desconcertado
00:31:24
Vete tú a saber
00:31:27
Con qué versión de JDK estás tú
00:31:28
Ya, ya, ya
00:31:30
Pero se supone que algo tienen que incorporar
00:31:37
En cada nueva versión
00:31:40
Pues se sacan eso de la manga y ya está
00:31:41
Bueno, switches con stream llevan ya bastante
00:31:42
Bueno, el hacerlo con el simbolito este
00:31:49
Y poner bloques de código
00:31:53
No sé a qué te refieres
00:31:55
Bueno, pues no sé, averigua
00:32:08
Averigua por qué a ti te deja y no te lo dices
00:32:09
¿Ya lo has averiguado?
00:32:11
Clean y update project
00:32:13
Y ya te falla
00:32:15
Ah, vale
00:32:16
O sea, no te daba error porque estaba mal
00:32:19
Vale, vale
00:32:21
Vale, no, no, a ver
00:32:23
Lo mío estaba mal, pero lo mío es que era una burrada
00:32:26
Pero cuando se habla
00:32:28
Se admite de hacer burradas
00:32:30
Porque yo no, de verdad que mi cabeza no piensa
00:32:32
Cuando estoy en clase, porque no me da tiempo
00:32:34
Yo no sé hablar y pensar
00:32:35
Entonces, me cuesta un montón
00:32:36
Hablar y pensar
00:32:40
Bueno, a ver, algo pienso
00:32:42
Porque consigo hilar una palabra con otra
00:32:44
Pero mi mente no está funcionando
00:32:46
En pleno rendimiento
00:32:48
Pero sí, obviamente era una burrada
00:32:50
Lo que estaba poniendo, claro
00:32:54
Estaba seteando en un get
00:32:56
Vale, bueno, pero ya estamos de acuerdo
00:32:57
Aunque esto ya sí está bien para todo el mundo
00:33:00
Ahora ya sí
00:33:02
Bueno, pues entonces vamos a ver
00:33:03
Si nos hace
00:33:07
Pero ¿y cómo nadie me dice
00:33:08
Además de él
00:33:13
La burrada que estaba poniendo?
00:33:14
Tú me lo estabas diciendo también
00:33:16
Que no podías meter nada en el constructual
00:33:18
Efectivamente, vale, pues bueno
00:33:20
Venga, vámonos al localhost
00:33:36
Y esto era
00:33:41
No eran tareas
00:33:48
Esto era
00:33:49
Esto que lo vamos a cambiar
00:33:51
Por
00:34:01
Se me ha quedado la doble barra
00:34:04
Por el ítem
00:34:11
Empezar
00:34:14
Vamos a cambiarlo por el ítem
00:34:19
Empezar
00:34:22
Venga, ¿será capaz de hacerme esta consulta?
00:34:25
Todos aquellos que tengan un ítem
00:34:29
Que sea empezar
00:34:32
No
00:34:33
Vale, no me encuentra el recurso
00:34:35
La ruta no la he puesto bien
00:34:40
Vamos a ver si no he puesto bien la ruta
00:34:42
Tareas, ítem, empezar
00:34:44
Vamos a ver
00:34:47
Tareas, ítem
00:34:48
Y aquí esto
00:34:53
Sí, la he puesto bien
00:34:55
Ah, me falta API
00:34:58
Me falta API
00:35:01
Vale, me falta el API
00:35:02
Toma ya
00:35:05
Vale, magnífico
00:35:10
Ahora sí, me ha sacado todas las consultas
00:35:12
Con los participantes
00:35:14
Así
00:35:16
De verdad que no tiene, no puede ser
00:35:18
Que no tenga participantes
00:35:20
Sí, porque los tenía vacíos
00:35:22
Vale
00:35:24
Vale, pues muy bien
00:35:33
Muy estupendo
00:35:42
Bueno, pues aquí sí que
00:35:43
Cerramos un poquito los contenidos
00:35:48
¿Vale?
00:35:50
Sí, entonces
00:35:55
Os voy a subir al aula virtual
00:35:56
Vamos a ver
00:35:59
Pero si ya casi habéis acabado
00:36:01
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Segundo Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 2
- Fecha:
- 20 de febrero de 2026 - 13:18
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 36′ 07″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 153.48 MBytes