Tema: CRUD con Spring MVC
Necesita crear una lista de tareas (lista de tareas pendientes) con la capacidad de ver la lista de tareas, agregar nuevas tareas, editar y eliminar tareas existentes.
Es recomendable no utilizar Spring Boot, sino descubrir cómo configurar todo usted mismo.
Qué hacer:
- Ampliar secuencia de comandos SQL
- Crea un nuevo proyecto Maven.
- Agregue las dependencias necesarias para trabajar con MySQL, Hibernate, Spring, Spring MVC, Thymeleaf.
- Agregue una capa de entidad (paquete de dominio) al proyecto. Agregue una clase
Task
: será responsable de la tarea en la lista de tareas pendientes. Campos obligatorios:description
– descripción de la tarea,status
– estado de ejecución de la tarea. Utilice enam como estado: - Agregue el paquete de configuración. En él, coloque las clases necesarias para configurar una aplicación Spring MVC, trabajar con la base de datos (a través de Hibernate) y todas las demás configuraciones.
- Agregue una capa dao, que debe contener la clase
TaskDAO
, que será responsable de trabajar con la base de datos. Los métodos que deberían estar ahí son CRUD y soporte de paginación. - Agregue una capa de servicio en la que coloque la lógica para crear y editar tareas.
- Ahora la capa del controlador: debería tener métodos:
- obtener una lista de tareas (incluida la paginación)
- añadir nueva tarea
- editar una tarea existente
- eliminar tarea
- El último paso es una plantilla (archivo html o js). Opcionalmente, puede mover estilos y secuencias de comandos a diferentes archivos por tipo. Como es habitual, para un desarrollador backend, la funcionalidad es importante, no la apariencia, por lo que el aspecto visual de la aplicación queda a su discreción. Lo tengo así:
CREAR BASE DE DATOS SI NO EXISTE `todo` /*!40100 CONJUNTO DE CARACTERES PREDETERMINADO utf8mb4 */;
USAR `todo`;
SOLTAR TABLA SI EXISTE `tarea`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET carácter_set_client = utf8 */;
CREAR TABLA `tarea` (
`id` int(11) NO NULL AUTO_INCREMENT,
`descripción` varchar(100) NO NULO,
`estado` int(11) NO NULO,
CLAVE PRIMARIA (`id`)
) MOTOR=InnoDB AUTO_INCREMENT=16 JUEGO DE CARACTERES PREDETERMINADO=utf8mb4;
/*!40101 SET caracter_set_client = @saved_cs_client */;
BLOQUEAR TABLAS `tarea` ESCRIBIR;
/*!40000 ALTER TABLA `tarea` DESHABILITAR TECLAS */;
INSERTAR IGNORAR EN LOS VALORES DE `tarea` (1,'aaa',1),(2,'bbb',2),(3,'ccc',0),(4,'ddd',1),(5, 'eee',2),(6,'fff',0),(7,'ggg',1),(8,'hhh',2),(9,'jjj',0),(10, 'kkk',1),(11,'lll',2),(12,'mmm',0),(13,'nnn',1),(14,'ooo',2),(15, 'ppp',0);
/*!40000 ALTER TABLE `tarea` HABILITAR TECLAS */;
DESBLOQUEAR MESAS;
Estado de enumeración pública {
EN CURSO,
HECHO,
PAUSADO
}
Piense en cuáles deberían ser los métodos y sus asignaciones.
![](https://cdn.codegym.cc/images/article/c6ef6b70-272f-4b61-875d-de4dd7d6c42a/512.jpeg)
Tarea opcional:
Empaque nuestra aplicación en un contenedor acoplable, agregue un archivo acoplable-compose, en el que configuramos el funcionamiento de la combinación aplicación-base de datos en contenedores acoplables.
Ejecución del proyecto: