Mavzu: CRUD Spring MVC da
Vazifalar ro'yxatini (todo-list) tuzish kerak, bunda ro'yxatni ko'rish, yangi vazifalar qo'shish, mavjud vazifalarni tahrirlash va o'chirish imkoniyati bo'lishi kerak.
Spring Boot dan foydalanmaslik ma'qul, o'zingiz konfiguratsiya qilishni o'rganing.
Nima qilish kerak:
- sql skriptini ishga tushiring
- Yangi Maven loyihasini yarating.
- MySQL, Hibernate, Spring, Spring MVC, Thymeleaf bilan ishlash uchun kerakli dependencies qo'shing.
- Loyihaga entity qatlami qo'shing (domain paketi).
Taskklassini qo'shing – u ro'yxatdagi vazifa uchun javob beradi. Kerakli maydonlar:description– vazifaning tavsifi,status– vazifaning bajarilish holati. Status sifatida enum qo'llang: - Config paketini qo'shing. Unda Spring MVC ilovasi, Hibernate orqali DB bilan ishlash va boshqa sozlamalar uchun kerakli klasslarni joylang.
- dao qatlami qo'shing, unda
TaskDAOklassi bo'lishi kerak, u DB bilan ishlash uchun javob beradi. CRUD va pagingni qo'llab-quvvatlovchi metodlar bo'lishi kerak. - Servis qatlamini qo'shing, unda vazifalarni yaratish va tahrirlash uchun logikani joylang.
- Endi controller qatlami: unda metodlar bo'lishi kerak:
- vazifalar ro'yxatini olish (pagingni hisobga olgan holda)
- yangi vazifa qo'shish
- mavjud vazifani tahrirlash
- vazifani o'chirish
- Oxirgi qadam – shablon (html yoki js fayli). Istalgancha uslub va skriptlar turlariga ko'ra alohida fayllarga ajratilishi mumkin. Odatda, backend dasturchi uchun funksional muhim, ko'rinishi esa – o'zingizga bog'liq. Menda shunday chiqqan:
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
}
Metodlar va ularning mappinglari qanday bo'lishi kerakligini o'zingiz o'ylab ko'ring.
Ixtiyoriy vazifa:
Bizning ilovamizni docker konteynerga o'rab, docker-compose fayli qo'shing, unda ilova-DBni docker-konteynerda ishlashini sozlang.
Loyihani bajarish:
GO TO FULL VERSION