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:

  1. Ampliar secuencia de comandos SQL
  2. 
    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;
    
  3. Crea un nuevo proyecto Maven.
  4. Agregue las dependencias necesarias para trabajar con MySQL, Hibernate, Spring, Spring MVC, Thymeleaf.
  5. 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:
  6. 
    Estado de enumeración pública {
        EN CURSO,
        HECHO,
        PAUSADO
    }
    
  7. 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.
  8. 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.
  9. Agregue una capa de servicio en la que coloque la lógica para crear y editar tareas.
  10. 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

    Piense en cuáles deberían ser los métodos y sus asignaciones.

  11. 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í:

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: