feat(cli): add interactive CRUD menu and resource cleanup
This commit is contained in:
@@ -1,17 +1,119 @@
|
|||||||
package com.example;
|
package com.example;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
UserDao userDao = new UserDao();
|
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 user = new User();
|
||||||
user.setName("User");
|
|
||||||
user.setEmail("user@example.com");
|
System.out.print("Имя: ");
|
||||||
user.setAge(99);
|
user.setName(scanner.nextLine());
|
||||||
|
|
||||||
|
System.out.print("Email: ");
|
||||||
|
user.setEmail(scanner.nextLine());
|
||||||
|
|
||||||
|
System.out.print("Возраст: ");
|
||||||
|
user.setAge(Integer.parseInt(scanner.nextLine()));
|
||||||
|
|
||||||
userDao.create(user);
|
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) {
|
private void handleException(Transaction transaction, HibernateException e) {
|
||||||
if (transaction != null) {
|
if (transaction != null) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user