/
houpsyu
/
Demo
Обзор
Документация
Войти
/
houpsyu
/
Demo
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/UserController.java
156 строк
7 KB
demo
1
12 янв 2026, 17:54
12 янв 2026, 17:54
c52af62
Код
Авторство
О чём код?
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; // Контроллер для работы с таблицей users public class UserController { // Получение всех пользователей из таблицы public List<User> getAllUsers() { List<User> users = new ArrayList<>(); String sql = "SELECT id, username, email, created_at, is_active FROM users ORDER BY id"; try (Connection connection = DatabaseConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql); ResultSet resultSet = statement.executeQuery()) { while (resultSet.next()) { // Используем метод parseAttributes() для создания объекта User User user = User.parseAttributes(resultSet); users.add(user); } } catch (SQLException e) { System.err.println("Ошибка при получении пользователей: " + e.getMessage()); e.printStackTrace(); } return users; } // Получение пользователя по ID public User getUserById(int id) { String sql = "SELECT id, username, email, created_at, is_active FROM users WHERE id = ?"; try (Connection connection = DatabaseConnection.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) { statement.setInt(1, id); try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { // Используем метод parseAttributes() для создания объекта User return User.parseAttributes(resultSet); } } } catch (SQLException e) { System.err.println("Ошибка при получении пользователя по ID: " + e.getMessage()); e.printStackTrace(); } return null; // Пользователь не найден } // SQL-запрос для проверки существования пользователя по username или email private static final String CHECK_USER_EXISTS = "SELECT COUNT(*) FROM users WHERE id = ? OR username = ? OR email = ?"; // SQL-запрос для вставки нового пользователя private static final String INSERT_USER = "INSERT INTO users (id,username, email, is_active) VALUES (?,?, ?, ?)"; /** * Добавляет нового пользователя в базу данных с проверкой уникальности username и email * @param username имя пользователя * @param email email пользователя * @return true если пользователь успешно добавлен, false если username или email уже существуют */ public boolean addUser(int id,String username, String email) { Connection connection = null; PreparedStatement checkStatement = null; PreparedStatement insertStatement = null; ResultSet resultSet = null; try { connection = DatabaseConnection.getConnection(); // Проверяем, существует ли уже пользователь с таким username или email checkStatement = connection.prepareStatement(CHECK_USER_EXISTS); checkStatement.setInt(1, id); checkStatement.setString(2, username); checkStatement.setString(3, email); resultSet = checkStatement.executeQuery(); if (resultSet.next() && resultSet.getInt(1) > 0) { System.err.println("Пользователь с таким username или email уже существует: " + username + ", " + email); return false; // Пользователь с таким username или email уже существует } // Закрываем предыдущие ресурсы перед использованием нового PreparedStatement resultSet.close(); checkStatement.close(); // Добавляем нового пользователя insertStatement = connection.prepareStatement(INSERT_USER); insertStatement.setInt(1, id); insertStatement.setString(2, username); insertStatement.setString(3, email); insertStatement.setBoolean(4, true); // is_active = true по умолчанию int rowsAffected = insertStatement.executeUpdate(); if (rowsAffected > 0) { System.out.println("Пользователь успешно добавлен: " + username + " (" + email + ")"); return true; } else { System.err.println("Не удалось добавить пользователя: " + username); return false; } } catch (SQLException e) { System.err.println("Ошибка при добавлении пользователя: " + e.getMessage()); e.printStackTrace(); return false; } finally { // Закрытие всех ресурсов try { if (resultSet != null) resultSet.close(); if (checkStatement != null) checkStatement.close(); if (insertStatement != null) insertStatement.close(); if (connection != null) connection.close(); } catch (SQLException e) { System.err.println("Ошибка при закрытии ресурсов: " + e.getMessage()); e.printStackTrace(); } } } // Пример использования контроллера public static void main(String[] args) { UserController userController = new UserController(); // Добавляем новых пользователей userController.addUser(3,"john_doe", "john@example.com"); userController.addUser(4,"jane_smith", "jane@example.com"); userController.addUser(5,"john_doe", "another_email@example.com"); // Должен отклонить из-за дублирования username // Получение всех пользователей System.out.println("Все пользователи:"); List<User> allUsers = userController.getAllUsers(); allUsers.forEach(System.out::println); // Получение пользователя по ID (например, ID = 1) System.out.println("\nПользователь с ID = 2:"); User user = userController.getUserById(2); if (user != null) { System.out.println(user); } else { System.out.println("Пользователь не найден"); } } }