feat(cli): add interactive CRUD menu and resource cleanup

This commit is contained in:
user
2026-09-21 21:20:02 +04:00
parent 69564f0f54
commit 5321c0aaa3
2 changed files with 110 additions and 4 deletions
@@ -1,17 +1,119 @@
package com.example;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
UserDao userDao = new UserDao();
Scanner scanner = new Scanner(System.in);
try {
while (true) {
printMenu();
String choice = scanner.nextLine();
clearConsole();
try {
switch (choice) {
case "1" -> createUser(userDao, scanner);
case "2" -> findUser(userDao, scanner);
case "3" -> updateUser(userDao, scanner);
case "4" -> deleteUser(userDao, scanner);
case "0" -> {
return;
}
default -> System.out.println("Неизвестная команда.");
}
} catch (NumberFormatException e) {
System.out.println("Ошибка: введите корректное число.");
} catch (RuntimeException e) {
System.out.println("Ошибка при работе с базой данных.");
}
}
} finally {
scanner.close();
userDao.close();
}
}
private static void printMenu() {
System.out.println("\n1. Создать пользователя");
System.out.println("2. Найти пользователя");
System.out.println("3. Обновить пользователя");
System.out.println("4. Удалить пользователя");
System.out.println("0. Выход");
System.out.print("Выберите действие: ");
}
private static void createUser(UserDao userDao, Scanner scanner) {
User user = new User();
user.setName("User");
user.setEmail("user@example.com");
user.setAge(99);
System.out.print("Имя: ");
user.setName(scanner.nextLine());
System.out.print("Email: ");
user.setEmail(scanner.nextLine());
System.out.print("Возраст: ");
user.setAge(Integer.parseInt(scanner.nextLine()));
userDao.create(user);
System.out.println(user);
System.out.println("Пользователь создан: " + user);
}
private static void findUser(UserDao userDao, Scanner scanner) {
System.out.print("ID пользователя: ");
Long id = Long.parseLong(scanner.nextLine());
User user = userDao.findById(id);
if (user != null) {
System.out.println(user);
} else {
System.out.println("Пользователь не найден.");
}
}
private static void updateUser(UserDao userDao, Scanner scanner) {
System.out.print("ID пользователя: ");
Long id = Long.parseLong(scanner.nextLine());
User user = userDao.findById(id);
if (user == null) {
System.out.println("Пользователь не найден.");
return;
}
System.out.print("Новое имя: ");
user.setName(scanner.nextLine());
System.out.print("Новый email: ");
user.setEmail(scanner.nextLine());
System.out.print("Новый возраст: ");
user.setAge(Integer.parseInt(scanner.nextLine()));
userDao.update(user);
System.out.println("Пользователь обновлён.");
}
private static void deleteUser(UserDao userDao, Scanner scanner) {
System.out.print("ID пользователя: ");
Long id = Long.parseLong(scanner.nextLine());
userDao.deleteById(id);
System.out.println("Пользователь удалён.");
}
private static void clearConsole() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
}
@@ -76,6 +76,10 @@ public class UserDao {
}
}
public void close() {
sessionFactory.close();
}
private void handleException(Transaction transaction, HibernateException e) {
if (transaction != null) {
try {