Тема: CRUD на Spring MVC
Потрібно зробити список завдань (todo-list) із можливістю переглядати його, додавати нові завдання, редагувати та видаляти існуючі завдання.
Бажано, не використовувати Spring Boot, а самому розібратися, як все налаштувати.
Що потрібно зробити:
- Розгорнути скрипт sql
- Створити новий проєкт Maven.
- Додати залежності, які потрібні для роботи з MySQL, Hibernate, Spring, Spring MVC, Thymeleaf.
- Додати до проєкту ентіті шар (пакет domain). Додати клас
Task
— він відповідатиме за завдання у списку справ. Необхідні поля:description
— опис завдання,status
— статус виконання завдання. Як статус використовуй енам: - Додай пакет config. У ньому розмісти необхідні класи налаштування Spring MVC програми, роботи з БД (через Hibernate) та інші налаштування.
- Додай dao шар, у якому має бути клас
TaskDAO
, який відповідатиме за роботу з БД. Методи, які мають бути — CRUD та підтримка пейджингу. - Додай сервісний шар, в якому розмісти логіку щодо створення та редагування завдань.
- Тепер шар контролера: у ньому мають бути методи:
- отримати список завдань (з урахуванням пейджингу)
- додати нове завдання
- відредагувати існуюче завдання
- видалити завдання
- Останній крок — шаблон (html або js файл). Опціонально, можна винести стилі та скрипти до різних файлів за типами. Як завжди, для бекенд-розробника важливий функціонал, а не зовнішній вигляд, тому яким буде візуал додатку — на твій розсуд. У мене вийшло так:
CREATE DATABASE IF NOT EXISTS `todo` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `todo`;
DROP TABLE IF EXISTS `task`;
/*!40101 SET @saved_cs_client = @character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`description` varchar(100) NOT NULL,
`status` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
LOCK TABLES `task` WRITE;
/*!40000 ALTER TABLE `task` DISABLE KEYS */;
INSERT IGNORE INTO `task` VALUES (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 `task` ENABLE KEYS */;
UNLOCK TABLES;
public enum Status {
IN_PROGRESS,
DONE,
PAUSED
}
Якими повинні бути методи та їх мапінги — продумай сам.
![](https://cdn.javarush.com/images/article/829c9b3e-23a9-42eb8 -79fd08de102f/512.jpeg)
Опціональне завдання:
Упакувати наш додаток у docker контейнер, додати docker-compose файл, в якому налаштувати роботу зв'язки додаток-БД у docker-контейнерах.
Виконання проєкту: