From 0c34d75b131fcc622513e0db430fa8baae162b47 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Mon, 14 Jun 2021 22:15:37 +0300 Subject: [PATCH 01/14] first commit --- pom.xml | 2 +- .../java/jm/task/core/jdbc/dao/UserDao.java | 11 +- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 127 ++++++++++++++++-- .../task/core/jdbc/service/UserService.java | 11 +- .../core/jdbc/service/UserServiceImpl.java | 24 ++-- .../java/jm/task/core/jdbc/util/Util.java | 31 ++++- .../java/jm/task/core/jdbc/util/mysql_config | 7 + 7 files changed, 179 insertions(+), 34 deletions(-) create mode 100644 src/main/java/jm/task/core/jdbc/util/mysql_config diff --git a/pom.xml b/pom.xml index 0605a4c0..9352de34 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ mysql mysql-connector-java - 5.1.38 + 8.0.25 diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDao.java b/src/main/java/jm/task/core/jdbc/dao/UserDao.java index 27069baf..8f4beb4d 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDao.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDao.java @@ -2,18 +2,19 @@ import jm.task.core.jdbc.model.User; +import java.sql.SQLException; import java.util.List; public interface UserDao { - void createUsersTable(); + void createUsersTable() throws SQLException; - void dropUsersTable(); + void dropUsersTable() throws SQLException; - void saveUser(String name, String lastName, byte age); + void saveUser(String name, String lastName, byte age) throws SQLException; - void removeUserById(long id); + void removeUserById(long id) throws SQLException; List getAllUsers(); - void cleanUsersTable(); + void cleanUsersTable() throws SQLException; } diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index a6c6c359..3a3594b7 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -1,35 +1,140 @@ package jm.task.core.jdbc.dao; import jm.task.core.jdbc.model.User; - +import jm.task.core.jdbc.util.Util; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class UserDaoJDBCImpl implements UserDao { - public UserDaoJDBCImpl() { + Connection connect; - } + public UserDaoJDBCImpl() {} - public void createUsersTable() { + public void createUsersTable() throws SQLException { + connect = new Util().connect(); + Statement statement = connect.createStatement(); + try { + connect.setAutoCommit(false); + statement.execute("create table if not exists users " + + "(id Integer auto_increment unique not null, " + + "name varchar (255), " + + "lastName varchar (255), " + + "age int, primary key (id))"); + connect.commit(); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println("Невозможно создать таблицу пользователей"); + } finally { + if (statement != null && connect != null) { + statement.close(); + connect.close(); + } + } + } + public void dropUsersTable() throws SQLException { + connect = new Util().connect(); + Statement statement = connect.createStatement(); + try { + connect.setAutoCommit(false); + statement.executeUpdate("drop table if exists users cascade"); + connect.commit(); + } catch (SQLException e) { + e.printStackTrace(); + connect.rollback(); + System.out.println("Невозможно удалить таблицу пользователей"); + } finally { + if (statement != null && connect != null) { + statement.close(); + connect.close(); + } + } } - public void dropUsersTable() { + public void saveUser(String firstName, String lastName, byte age) throws SQLException { + connect = new Util().connect(); + Statement statement = connect.createStatement(); + try { + connect.setAutoCommit(false); - } + statement.executeUpdate("insert into users " + + "(name, lastName, age) " + + "values ('" + firstName + "', '" + lastName + "', " + age + ")"); - public void saveUser(String name, String lastName, byte age) { + ResultSet request = connect + .createStatement() + .executeQuery("select name from users where name = '" + firstName + "'"); + connect.commit(); + User user = new User(); + while (request.next()) { + user.setName(request.getString("name")); + } + System.out.printf("Пользователь %s добавлен\n", user.getName()); + } catch (SQLException e) { + System.out.println("Невозможно сохранить пользователей"); + } finally { + if (statement != null && connect != null) { + statement.close(); + connect.close(); + } + } } - public void removeUserById(long id) { - + public void removeUserById(long id) throws SQLException { + connect = new Util().connect(); + Statement statement = connect.createStatement(); + try { + if (id > 0) { + connect.setAutoCommit(false); + statement.executeUpdate("delete from users where id =" + id + ""); + connect.commit(); + } + } catch (SQLException e) { + System.out.println("Невозможно удалить пользователя"); + } finally { + if (statement != null && connect != null) { + statement.close(); + connect.close(); + } + } } public List getAllUsers() { + try (Connection connect = new Util().connect()) { + List allUsers = new ArrayList<>(); + Statement statement = connect.createStatement(); + ResultSet request = statement.executeQuery("select * from users"); + while (request.next()) { + User users = new User(); + users.setId(request.getLong("id")); + users.setName(request.getString("name")); + users.setLastName(request.getString("lastName")); + users.setAge((byte)request.getInt("age")); + allUsers.add(users); + } + return allUsers; + } catch (SQLException e) { + System.out.println("Невозможно получить пользователей"); + } return null; } - public void cleanUsersTable() { - + public void cleanUsersTable() throws SQLException { + connect = new Util().connect(); + Statement statement = connect.createStatement(); + try { + connect.setAutoCommit(false); + statement.execute("TRUNCATE TABLE users"); + connect.commit(); + } catch (SQLException e) { + System.out.println("Невозможно очистить таблицу пользователей"); + } finally { + if (statement != null && connect != null) { + statement.close(); + connect.close(); + } + } } } diff --git a/src/main/java/jm/task/core/jdbc/service/UserService.java b/src/main/java/jm/task/core/jdbc/service/UserService.java index 80542c68..7dde6762 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserService.java +++ b/src/main/java/jm/task/core/jdbc/service/UserService.java @@ -2,18 +2,19 @@ import jm.task.core.jdbc.model.User; +import java.sql.SQLException; import java.util.List; public interface UserService { - void createUsersTable(); + void createUsersTable() throws SQLException; - void dropUsersTable(); + void dropUsersTable() throws SQLException; - void saveUser(String name, String lastName, byte age); + void saveUser(String name, String lastName, byte age) throws SQLException; - void removeUserById(long id); + void removeUserById(long id) throws SQLException; List getAllUsers(); - void cleanUsersTable(); + void cleanUsersTable() throws SQLException; } diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java index b05bd191..cf5bf22c 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -1,31 +1,35 @@ package jm.task.core.jdbc.service; +import jm.task.core.jdbc.dao.*; import jm.task.core.jdbc.model.User; +import java.sql.SQLException; import java.util.List; public class UserServiceImpl implements UserService { - public void createUsersTable() { + UserDao query = new UserDaoJDBCImpl(); + public void createUsersTable() throws SQLException { + query.createUsersTable(); } - public void dropUsersTable() { - + public void dropUsersTable() throws SQLException { + query.dropUsersTable(); } - public void saveUser(String name, String lastName, byte age) { - + public void saveUser(String firstName, String lastName, byte age) throws SQLException { + query.saveUser(firstName, lastName, age); } - public void removeUserById(long id) { - + public void removeUserById(long id) throws SQLException { + query.removeUserById(id); } public List getAllUsers() { - return null; + return new UserDaoJDBCImpl().getAllUsers(); } - public void cleanUsersTable() { - + public void cleanUsersTable() throws SQLException { + query.cleanUsersTable(); } } diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 59e462ba..5f318e15 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,5 +1,32 @@ package jm.task.core.jdbc.util; +import java.io.File; +import java.io.FileNotFoundException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Scanner; + public class Util { - // реализуйте настройку соеденения с БД -} + Connection connect; + + public Connection connect() { + try { + Scanner s = new Scanner(new File("/home/nethunter/IdeaProjects/CoreTaskTemplate/src/main/java/jm/task/core/jdbc/util/mysql_config.txt")); + while (s.hasNext()) { + String url = s.next() + + ":" + s.next() + + ":" + "//" + s.next() + + ":" + s.next() + + "/" + s.next(); + String user = s.next(); + String password = s.next(); + Class.forName("com.mysql.cj.jdbc.Driver"); + connect = DriverManager.getConnection(url, user, password); + } + } catch (FileNotFoundException | ClassNotFoundException | SQLException e) { + e.printStackTrace(); + } + return connect; + } +} \ No newline at end of file diff --git a/src/main/java/jm/task/core/jdbc/util/mysql_config b/src/main/java/jm/task/core/jdbc/util/mysql_config new file mode 100644 index 00000000..18e45025 --- /dev/null +++ b/src/main/java/jm/task/core/jdbc/util/mysql_config @@ -0,0 +1,7 @@ +jdbc +mysql +localhost +3306 +jm-base-module-one +jm-admin +!Jmc0urs3 From 86a83e4de4da99a909d6bcfd0fde1830b04b61aa Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Mon, 14 Jun 2021 23:08:30 +0300 Subject: [PATCH 02/14] first commit --- src/main/java/jm/task/core/jdbc/Main.java | 18 ++++++++++++++++-- .../java/jm/task/core/jdbc/model/User.java | 9 +++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index f6e43b0f..de789399 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,7 +1,21 @@ package jm.task.core.jdbc; +import jm.task.core.jdbc.model.User; +import jm.task.core.jdbc.service.UserService; +import jm.task.core.jdbc.service.UserServiceImpl; + +import java.sql.SQLException; + public class Main { - public static void main(String[] args) { - // реализуйте алгоритм здесь + public static void main(String[] args) throws SQLException { + UserService service = new UserServiceImpl(); + service.createUsersTable(); + service.saveUser("Батрутдинов", "Тимур", (byte) 38); + service.saveUser("Мартиросян", "Гарик", (byte) 44); + service.saveUser("Воля", "Павел", (byte) 40); + service.saveUser("Слепаков", "Семен", (byte) 41); + System.out.println(service.getAllUsers()); + service.cleanUsersTable(); + service.dropUsersTable(); } } diff --git a/src/main/java/jm/task/core/jdbc/model/User.java b/src/main/java/jm/task/core/jdbc/model/User.java index 21b054f6..cfcdeed8 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -59,4 +59,13 @@ public Byte getAge() { public void setAge(Byte age) { this.age = age; } + + @Override + public String toString() { + return "\nПользователь: " + + " id: " + id + + " Имя: " + name + + " Фамилия: " + lastName + + " Возраст: " + age + " "; + } } From 6f3533ab51962605f9b73c5983efde20e97a5d92 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Mon, 14 Jun 2021 23:10:22 +0300 Subject: [PATCH 03/14] first commit --- src/main/java/jm/task/core/jdbc/Main.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index de789399..b21337eb 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,6 +1,5 @@ package jm.task.core.jdbc; -import jm.task.core.jdbc.model.User; import jm.task.core.jdbc.service.UserService; import jm.task.core.jdbc.service.UserServiceImpl; From 8d39882aa5c1942357f4e71616cae80b4c600374 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:03:44 +0300 Subject: [PATCH 04/14] first commit --- src/main/Resources/mysql_config | 7 + src/main/java/jm/task/core/jdbc/Main.java | 15 +- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 153 +++++++----------- .../core/jdbc/service/UserServiceImpl.java | 6 +- .../java/jm/task/core/jdbc/util/Util.java | 36 +++-- .../java/jm/task/core/jdbc/util/mysql_config | 7 - 6 files changed, 97 insertions(+), 127 deletions(-) create mode 100644 src/main/Resources/mysql_config delete mode 100644 src/main/java/jm/task/core/jdbc/util/mysql_config diff --git a/src/main/Resources/mysql_config b/src/main/Resources/mysql_config new file mode 100644 index 00000000..7635e016 --- /dev/null +++ b/src/main/Resources/mysql_config @@ -0,0 +1,7 @@ +db.driver = jdbc: +db.type = mysql: +db.host = //localhost +db.port = :3306 +db.base = /jm-base-module-one +db.login = jm-admin +db.password = !Jmc0urs3 diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index b21337eb..1524da45 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,19 +1,24 @@ package jm.task.core.jdbc; +import jm.task.core.jdbc.model.User; import jm.task.core.jdbc.service.UserService; import jm.task.core.jdbc.service.UserServiceImpl; import java.sql.SQLException; +import java.util.Arrays; public class Main { public static void main(String[] args) throws SQLException { UserService service = new UserServiceImpl(); service.createUsersTable(); - service.saveUser("Батрутдинов", "Тимур", (byte) 38); - service.saveUser("Мартиросян", "Гарик", (byte) 44); - service.saveUser("Воля", "Павел", (byte) 40); - service.saveUser("Слепаков", "Семен", (byte) 41); - System.out.println(service.getAllUsers()); + service.saveUser("Тимур", "Батрутдинов", (byte) 38); + service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Павел", "Воля", (byte) 40); + service.saveUser("Семен", "Слепаков", (byte) 41); + for (User user : service.getAllUsers()) { + System.out.printf("%s", user); + } + System.out.println(); service.cleanUsersTable(); service.dropUsersTable(); } diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 3a3594b7..862702bc 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -4,137 +4,96 @@ import jm.task.core.jdbc.util.Util; import java.sql.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class UserDaoJDBCImpl implements UserDao { - Connection connect; + private final Util util = new Util(); public UserDaoJDBCImpl() {} - public void createUsersTable() throws SQLException { - connect = new Util().connect(); - Statement statement = connect.createStatement(); - try { - connect.setAutoCommit(false); - statement.execute("create table if not exists users " + - "(id Integer auto_increment unique not null, " + - "name varchar (255), " + - "lastName varchar (255), " + - "age int, primary key (id))"); - connect.commit(); + public void createUsersTable() { + try (PreparedStatement statement = util.connect() + .prepareStatement("create table if not exists users " + + "(id Integer auto_increment unique not null, " + + "name varchar (255), " + + "lastName varchar (255), " + + "age int, " + + "primary key (id))")) { + statement.execute(); + System.out.println("Таблица готова."); } catch (SQLException e) { + System.err.format("Упсс...\nПохоже пользователь не был добавлен.\nSQL ERROR: %s\n", e.getSQLState()); e.printStackTrace(); - System.out.println("Невозможно создать таблицу пользователей"); - } finally { - if (statement != null && connect != null) { - statement.close(); - connect.close(); - } } } - public void dropUsersTable() throws SQLException { - connect = new Util().connect(); - Statement statement = connect.createStatement(); - try { - connect.setAutoCommit(false); - statement.executeUpdate("drop table if exists users cascade"); - connect.commit(); + public void dropUsersTable() { + try (PreparedStatement statement = util.connect().prepareStatement("drop table if exists users cascade")) { + statement.execute(); + System.out.println("Таблица успешно удалена."); } catch (SQLException e) { + System.err.format("Упсс...\nПохоже пользователь не был добавлен.\nSQL ERROR: %s\n", e.getSQLState()); e.printStackTrace(); - connect.rollback(); - System.out.println("Невозможно удалить таблицу пользователей"); - } finally { - if (statement != null && connect != null) { - statement.close(); - connect.close(); - } } } - public void saveUser(String firstName, String lastName, byte age) throws SQLException { - connect = new Util().connect(); - Statement statement = connect.createStatement(); - try { - connect.setAutoCommit(false); - - statement.executeUpdate("insert into users " + - "(name, lastName, age) " + - "values ('" + firstName + "', '" + lastName + "', " + age + ")"); - - ResultSet request = connect - .createStatement() - .executeQuery("select name from users where name = '" + firstName + "'"); - connect.commit(); - - User user = new User(); - while (request.next()) { - user.setName(request.getString("name")); + public void saveUser(String name, String lastName, byte age) { + try (PreparedStatement statement = util.connect() + .prepareStatement("insert into users (name, lastName, age) values (?, ?, ?)")) { + statement.setString(1, name); + statement.setString(2, lastName); + statement.setInt(3, age); + statement.executeUpdate(); + ResultSet test = statement.executeQuery("select * from users where name = '" + name + "'"); + while (test.next()) { + System.out.printf("Пользователь с именем %s %s успешно добавлен\n", test.getString("name"), test.getString("lastName")); } - System.out.printf("Пользователь %s добавлен\n", user.getName()); } catch (SQLException e) { - System.out.println("Невозможно сохранить пользователей"); - } finally { - if (statement != null && connect != null) { - statement.close(); - connect.close(); - } + System.err.format("Упсс...\nПохоже пользователь %s %s не был добавлен.\nSQL ERROR: %s\n", + name, lastName, e.getSQLState()); + e.printStackTrace(); } } - public void removeUserById(long id) throws SQLException { - connect = new Util().connect(); - Statement statement = connect.createStatement(); - try { - if (id > 0) { - connect.setAutoCommit(false); - statement.executeUpdate("delete from users where id =" + id + ""); - connect.commit(); - } + public void removeUserById(long id) { + try (PreparedStatement statement = util.connect().prepareStatement("delete from users where id = ?")) { + statement.setLong(1, id); + statement.executeUpdate(); + System.out.println("Пользователь удален"); } catch (SQLException e) { - System.out.println("Невозможно удалить пользователя"); - } finally { - if (statement != null && connect != null) { - statement.close(); - connect.close(); - } + System.err.format("Мы не уверены, но кажется id c номером %d в базе данных нет.\nSQL ERROR: %s\n", + id, e.getSQLState()); + e.printStackTrace(); } } public List getAllUsers() { - try (Connection connect = new Util().connect()) { - List allUsers = new ArrayList<>(); - Statement statement = connect.createStatement(); - ResultSet request = statement.executeQuery("select * from users"); - while (request.next()) { + List all = new ArrayList<>(); + try (PreparedStatement statement = util.connect().prepareStatement("select * from users")) { + ResultSet response = statement.executeQuery(); + while (response.next()) { User users = new User(); - users.setId(request.getLong("id")); - users.setName(request.getString("name")); - users.setLastName(request.getString("lastName")); - users.setAge((byte)request.getInt("age")); - allUsers.add(users); + users.setId(response.getLong("id")); + users.setName(response.getString("name")); + users.setLastName(response.getString("lastName")); + users.setAge((byte)response.getInt("age")); + all.add(users); } - return allUsers; } catch (SQLException e) { - System.out.println("Невозможно получить пользователей"); + System.err.format("Не знаем, что вы задумали, но данных вам не видать!\nSQL ERROR: %s\n", e.getSQLState()); + e.printStackTrace(); } - return null; + return all; } - public void cleanUsersTable() throws SQLException { - connect = new Util().connect(); - Statement statement = connect.createStatement(); - try { - connect.setAutoCommit(false); - statement.execute("TRUNCATE TABLE users"); - connect.commit(); + public void cleanUsersTable() { + try (Connection connection = util.connect()) { + PreparedStatement statement = connection.prepareStatement("TRUNCATE TABLE users"); + statement.executeUpdate(); + System.out.println("Таблица успешно очищена."); } catch (SQLException e) { System.out.println("Невозможно очистить таблицу пользователей"); - } finally { - if (statement != null && connect != null) { - statement.close(); - connect.close(); - } } } } diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java index cf5bf22c..c4495cfe 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -7,7 +7,7 @@ import java.util.List; public class UserServiceImpl implements UserService { - UserDao query = new UserDaoJDBCImpl(); + private final UserDao query = new UserDaoJDBCImpl(); public void createUsersTable() throws SQLException { query.createUsersTable(); @@ -17,8 +17,8 @@ public void dropUsersTable() throws SQLException { query.dropUsersTable(); } - public void saveUser(String firstName, String lastName, byte age) throws SQLException { - query.saveUser(firstName, lastName, age); + public void saveUser(String name, String lastName, byte age) throws SQLException { + query.saveUser(name, lastName, age); } public void removeUserById(long id) throws SQLException { diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 5f318e15..4c474f95 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,30 +1,36 @@ package jm.task.core.jdbc.util; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.Properties; import java.util.Scanner; public class Util { Connection connect; - public Connection connect() { - try { - Scanner s = new Scanner(new File("/home/nethunter/IdeaProjects/CoreTaskTemplate/src/main/java/jm/task/core/jdbc/util/mysql_config.txt")); - while (s.hasNext()) { - String url = s.next() + - ":" + s.next() + - ":" + "//" + s.next() + - ":" + s.next() + - "/" + s.next(); - String user = s.next(); - String password = s.next(); - Class.forName("com.mysql.cj.jdbc.Driver"); - connect = DriverManager.getConnection(url, user, password); - } - } catch (FileNotFoundException | ClassNotFoundException | SQLException e) { + Properties property = new Properties(); + try (FileInputStream input = new FileInputStream("src/main/Resources/mysql_config")) { + + property.load(input); + String url = "" + property.getProperty("db.driver") + + property.getProperty("db.type") + property.getProperty("db.host") + + property.getProperty("db.port") + + property.getProperty("db.base") + ""; + + String user = property.getProperty("db.login"); + String password = property.getProperty("db.password"); + + Class.forName("com.mysql.cj.jdbc.Driver"); + + connect = DriverManager.getConnection(url, user, password); + System.out.println("=============================="); + } catch (ClassNotFoundException | SQLException | IOException e) { + System.err.format("Ошибка подключения к базе данных %s", property.getProperty("db.base")); e.printStackTrace(); } return connect; diff --git a/src/main/java/jm/task/core/jdbc/util/mysql_config b/src/main/java/jm/task/core/jdbc/util/mysql_config deleted file mode 100644 index 18e45025..00000000 --- a/src/main/java/jm/task/core/jdbc/util/mysql_config +++ /dev/null @@ -1,7 +0,0 @@ -jdbc -mysql -localhost -3306 -jm-base-module-one -jm-admin -!Jmc0urs3 From f638d301544b5ca8eb88c7eb08169473bd7c9182 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:17:09 +0300 Subject: [PATCH 05/14] first commit --- src/main/java/jm/task/core/jdbc/Main.java | 1 - src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 4 ++-- src/main/java/jm/task/core/jdbc/model/User.java | 8 ++++---- src/main/java/jm/task/core/jdbc/util/Util.java | 1 - 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index 1524da45..84a0272f 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -18,7 +18,6 @@ public static void main(String[] args) throws SQLException { for (User user : service.getAllUsers()) { System.out.printf("%s", user); } - System.out.println(); service.cleanUsersTable(); service.dropUsersTable(); } diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 862702bc..65718341 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -60,7 +60,7 @@ public void removeUserById(long id) { try (PreparedStatement statement = util.connect().prepareStatement("delete from users where id = ?")) { statement.setLong(1, id); statement.executeUpdate(); - System.out.println("Пользователь удален"); + System.out.println("Пользователь удален\n"); } catch (SQLException e) { System.err.format("Мы не уверены, но кажется id c номером %d в базе данных нет.\nSQL ERROR: %s\n", id, e.getSQLState()); @@ -91,7 +91,7 @@ public void cleanUsersTable() { try (Connection connection = util.connect()) { PreparedStatement statement = connection.prepareStatement("TRUNCATE TABLE users"); statement.executeUpdate(); - System.out.println("Таблица успешно очищена."); + System.out.println("\nТаблица успешно очищена."); } catch (SQLException e) { System.out.println("Невозможно очистить таблицу пользователей"); } diff --git a/src/main/java/jm/task/core/jdbc/model/User.java b/src/main/java/jm/task/core/jdbc/model/User.java index cfcdeed8..0924acf6 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -63,9 +63,9 @@ public void setAge(Byte age) { @Override public String toString() { return "\nПользователь: " + - " id: " + id + - " Имя: " + name + - " Фамилия: " + lastName + - " Возраст: " + age + " "; + "| id: " + id + + "| Имя: " + name + + "| Фамилия: " + lastName + + "| Возраст: " + age + " "; } } diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 4c474f95..024e243a 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -28,7 +28,6 @@ public Connection connect() { Class.forName("com.mysql.cj.jdbc.Driver"); connect = DriverManager.getConnection(url, user, password); - System.out.println("=============================="); } catch (ClassNotFoundException | SQLException | IOException e) { System.err.format("Ошибка подключения к базе данных %s", property.getProperty("db.base")); e.printStackTrace(); From a73ac7cf9889186ef28b1b9be7046196aa18774b Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:22:43 +0300 Subject: [PATCH 06/14] first commit --- src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 1 - src/main/java/jm/task/core/jdbc/util/Util.java | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 65718341..e8c22d4e 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -4,7 +4,6 @@ import jm.task.core.jdbc.util.Util; import java.sql.*; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class UserDaoJDBCImpl implements UserDao { diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 024e243a..2bad0a6b 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,14 +1,11 @@ package jm.task.core.jdbc.util; -import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; -import java.util.Scanner; public class Util { Connection connect; From 16b0fbe0c6bfbcc64ec6e53f7f9be68ebb35ca80 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:29:41 +0300 Subject: [PATCH 07/14] first commit --- .../jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index e8c22d4e..26d6ab14 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -13,12 +13,12 @@ public UserDaoJDBCImpl() {} public void createUsersTable() { try (PreparedStatement statement = util.connect() - .prepareStatement("create table if not exists users " + - "(id Integer auto_increment unique not null, " + - "name varchar (255), " + - "lastName varchar (255), " + - "age int, " + - "primary key (id))")) { + .prepareStatement("create table if not exists users " + + "(id Integer auto_increment unique not null, " + + "name varchar (255), " + + "lastName varchar (255), " + + "age int, " + + "primary key (id))")) { statement.execute(); System.out.println("Таблица готова."); } catch (SQLException e) { @@ -40,11 +40,14 @@ public void dropUsersTable() { public void saveUser(String name, String lastName, byte age) { try (PreparedStatement statement = util.connect() .prepareStatement("insert into users (name, lastName, age) values (?, ?, ?)")) { + statement.setString(1, name); statement.setString(2, lastName); statement.setInt(3, age); statement.executeUpdate(); + ResultSet test = statement.executeQuery("select * from users where name = '" + name + "'"); + while (test.next()) { System.out.printf("Пользователь с именем %s %s успешно добавлен\n", test.getString("name"), test.getString("lastName")); } From 8ca45d1c66add6754872032b63588a5f1c54dbab Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:31:14 +0300 Subject: [PATCH 08/14] first commit --- src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 26d6ab14..36552e7b 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -39,7 +39,7 @@ public void dropUsersTable() { public void saveUser(String name, String lastName, byte age) { try (PreparedStatement statement = util.connect() - .prepareStatement("insert into users (name, lastName, age) values (?, ?, ?)")) { + .prepareStatement("insert into users (name, lastName, age) values (?, ?, ?)")) { statement.setString(1, name); statement.setString(2, lastName); @@ -53,7 +53,7 @@ public void saveUser(String name, String lastName, byte age) { } } catch (SQLException e) { System.err.format("Упсс...\nПохоже пользователь %s %s не был добавлен.\nSQL ERROR: %s\n", - name, lastName, e.getSQLState()); + name, lastName, e.getSQLState()); e.printStackTrace(); } } @@ -65,7 +65,7 @@ public void removeUserById(long id) { System.out.println("Пользователь удален\n"); } catch (SQLException e) { System.err.format("Мы не уверены, но кажется id c номером %d в базе данных нет.\nSQL ERROR: %s\n", - id, e.getSQLState()); + id, e.getSQLState()); e.printStackTrace(); } } From ae6877f644e9de277d7c7604d35fa109bc657158 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Tue, 15 Jun 2021 04:34:17 +0300 Subject: [PATCH 09/14] first commit --- src/main/java/jm/task/core/jdbc/Main.java | 1 - src/main/java/jm/task/core/jdbc/model/User.java | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index 84a0272f..dae69063 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -5,7 +5,6 @@ import jm.task.core.jdbc.service.UserServiceImpl; import java.sql.SQLException; -import java.util.Arrays; public class Main { public static void main(String[] args) throws SQLException { diff --git a/src/main/java/jm/task/core/jdbc/model/User.java b/src/main/java/jm/task/core/jdbc/model/User.java index 0924acf6..3adbd622 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -63,9 +63,9 @@ public void setAge(Byte age) { @Override public String toString() { return "\nПользователь: " + - "| id: " + id + - "| Имя: " + name + - "| Фамилия: " + lastName + - "| Возраст: " + age + " "; + " id: " + id + + " Имя: " + name + + " Фамилия: " + lastName + + " Возраст: " + age + " лет"; } } From 01937aa1d24692e436dddade7416b08b1b61d10b Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Thu, 17 Jun 2021 19:35:50 +0300 Subject: [PATCH 10/14] first commit hibernate empty --- pom.xml | 4 +- src/main/Resources/mysql_config | 21 ++-- src/main/java/jm/task/core/jdbc/Main.java | 25 +++-- .../core/jdbc/dao/UserDaoHibernateImpl.java | 4 +- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 100 +++++++++--------- .../java/jm/task/core/jdbc/util/Util.java | 23 ++-- 6 files changed, 99 insertions(+), 78 deletions(-) diff --git a/pom.xml b/pom.xml index 9352de34..5b029a8a 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ org.apache.maven.plugins maven-compiler-plugin - 7 - 7 + 8 + 8 diff --git a/src/main/Resources/mysql_config b/src/main/Resources/mysql_config index 7635e016..8d8ad0af 100644 --- a/src/main/Resources/mysql_config +++ b/src/main/Resources/mysql_config @@ -1,7 +1,14 @@ -db.driver = jdbc: -db.type = mysql: -db.host = //localhost -db.port = :3306 -db.base = /jm-base-module-one -db.login = jm-admin -db.password = !Jmc0urs3 +# db.driver = jdbc: +# db.type = mysql: +# db.host = //localhost +# db.port = :3306 +# db.base = /jm-base-module-one +# db.login = jm-admin +# db.password = !Jmc0urs3 +spring.datasource.url = jdbc:mysql://localhost:3306/jm-base-module-one +spring.datasource.username = jm-admin +spring.datasource.password = !Jmc0urs3 +spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver + +spring.jpa.properties.hibernate.current_sessions_context_class = thread +spring.show-sql = true \ No newline at end of file diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index dae69063..cf8ab709 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,22 +1,35 @@ package jm.task.core.jdbc; import jm.task.core.jdbc.model.User; -import jm.task.core.jdbc.service.UserService; -import jm.task.core.jdbc.service.UserServiceImpl; - +import jm.task.core.jdbc.service.*; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; public class Main { public static void main(String[] args) throws SQLException { UserService service = new UserServiceImpl(); + + System.out.println("Создаем таблицу пользователей..."); service.createUsersTable(); + + + System.out.println("Добавляем пользователей..."); service.saveUser("Тимур", "Батрутдинов", (byte) 38); service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Гарик", "Мартиросян", (byte) 44); service.saveUser("Павел", "Воля", (byte) 40); service.saveUser("Семен", "Слепаков", (byte) 41); - for (User user : service.getAllUsers()) { - System.out.printf("%s", user); - } + + + System.out.println("Выводим список всех пользователей..."); + List users = new ArrayList<>(service.getAllUsers()); + users.stream() + .sorted((u1, u2) -> u1.getName().compareToIgnoreCase(u2.getName())) + .forEach(System.out::println); + + + System.out.println("Очищаем и удаляем таблицу пользователей"); service.cleanUsersTable(); service.dropUsersTable(); } diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java index dc2d0636..49b8a581 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java @@ -1,7 +1,10 @@ package jm.task.core.jdbc.dao; +import com.mysql.cj.Session; import jm.task.core.jdbc.model.User; +import jm.task.core.jdbc.util.Util; +import java.util.Comparator; import java.util.List; public class UserDaoHibernateImpl implements UserDao { @@ -9,7 +12,6 @@ public UserDaoHibernateImpl() { } - @Override public void createUsersTable() { diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 36552e7b..2b85bf43 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -7,73 +7,73 @@ import java.util.List; public class UserDaoJDBCImpl implements UserDao { - private final Util util = new Util(); + private static Util util = new Util(); + private static Connection connection; + private static final String CREATE_TABLE_SQL_REQUEST = "CREATE TABLE IF NOT EXISTS users " + + "(id BIGINT AUTO_INCREMENT UNIQUE NOT NULL, " + + "name VARCHAR(45), " + + "lastName VARCHAR(45), " + + "age INT, " + + "PRIMARY KEY (id))"; + private static final String DROP_SQL_REQUEST = "DROP TABLE IF EXISTS users CASCADE"; + private static final String INSERT_SQL_REQUEST = "INSERT INTO users (name, lastName, age) VALUES (?, ?, ?)"; + private static final String SELECT_ALL_USERS_SQL_REQUEST = "SELECT * FROM users"; + private static final String DELETE_USER_SQL_REQUEST = "DELETE FROM users WHERE id = ?"; + private static final String TRUNCATE_TABLE_SQL_REQUEST = "TRUNCATE TABLE users"; - public UserDaoJDBCImpl() {} + public UserDaoJDBCImpl() { + + } public void createUsersTable() { - try (PreparedStatement statement = util.connect() - .prepareStatement("create table if not exists users " + - "(id Integer auto_increment unique not null, " + - "name varchar (255), " + - "lastName varchar (255), " + - "age int, " + - "primary key (id))")) { - statement.execute(); - System.out.println("Таблица готова."); + connection = util.connect(); + try (Statement statement = connection.createStatement()) { + statement.executeUpdate(CREATE_TABLE_SQL_REQUEST); + connection.close(); } catch (SQLException e) { - System.err.format("Упсс...\nПохоже пользователь не был добавлен.\nSQL ERROR: %s\n", e.getSQLState()); - e.printStackTrace(); + e.getSQLState(); } } public void dropUsersTable() { - try (PreparedStatement statement = util.connect().prepareStatement("drop table if exists users cascade")) { - statement.execute(); - System.out.println("Таблица успешно удалена."); + connection = util.connect(); + try (Statement statement = connection.createStatement()) { + statement.execute(DROP_SQL_REQUEST); + connection.close(); } catch (SQLException e) { - System.err.format("Упсс...\nПохоже пользователь не был добавлен.\nSQL ERROR: %s\n", e.getSQLState()); - e.printStackTrace(); + e.getSQLState(); } } public void saveUser(String name, String lastName, byte age) { - try (PreparedStatement statement = util.connect() - .prepareStatement("insert into users (name, lastName, age) values (?, ?, ?)")) { - - statement.setString(1, name); - statement.setString(2, lastName); - statement.setInt(3, age); - statement.executeUpdate(); - - ResultSet test = statement.executeQuery("select * from users where name = '" + name + "'"); - - while (test.next()) { - System.out.printf("Пользователь с именем %s %s успешно добавлен\n", test.getString("name"), test.getString("lastName")); - } + connection = util.connect(); + try (PreparedStatement preparedStatement = connection.prepareStatement(INSERT_SQL_REQUEST)) { + preparedStatement.setString(1, name); + preparedStatement.setString(2, lastName); + preparedStatement.setInt(3, age); + preparedStatement.executeUpdate(); + connection.close(); + System.out.printf("Пользователь %s %s успешно добавлен\n", lastName, name); } catch (SQLException e) { - System.err.format("Упсс...\nПохоже пользователь %s %s не был добавлен.\nSQL ERROR: %s\n", - name, lastName, e.getSQLState()); - e.printStackTrace(); + e.getSQLState(); } } public void removeUserById(long id) { - try (PreparedStatement statement = util.connect().prepareStatement("delete from users where id = ?")) { - statement.setLong(1, id); - statement.executeUpdate(); - System.out.println("Пользователь удален\n"); + connection = util.connect(); + try (PreparedStatement preparedStatement = connection.prepareStatement(DELETE_USER_SQL_REQUEST)) { + preparedStatement.executeUpdate(); + connection.close(); } catch (SQLException e) { - System.err.format("Мы не уверены, но кажется id c номером %d в базе данных нет.\nSQL ERROR: %s\n", - id, e.getSQLState()); - e.printStackTrace(); + e.getSQLState(); } } public List getAllUsers() { List all = new ArrayList<>(); - try (PreparedStatement statement = util.connect().prepareStatement("select * from users")) { - ResultSet response = statement.executeQuery(); + connection = util.connect(); + try (Statement statement = connection.createStatement()) { + ResultSet response = statement.executeQuery(SELECT_ALL_USERS_SQL_REQUEST); while (response.next()) { User users = new User(); users.setId(response.getLong("id")); @@ -82,20 +82,20 @@ public List getAllUsers() { users.setAge((byte)response.getInt("age")); all.add(users); } + connection.close(); } catch (SQLException e) { - System.err.format("Не знаем, что вы задумали, но данных вам не видать!\nSQL ERROR: %s\n", e.getSQLState()); - e.printStackTrace(); + e.getSQLState(); } return all; } public void cleanUsersTable() { - try (Connection connection = util.connect()) { - PreparedStatement statement = connection.prepareStatement("TRUNCATE TABLE users"); - statement.executeUpdate(); - System.out.println("\nТаблица успешно очищена."); + connection = util.connect(); + try (Statement statement = connection.createStatement()) { + statement.executeUpdate(TRUNCATE_TABLE_SQL_REQUEST); + connection.close(); } catch (SQLException e) { - System.out.println("Невозможно очистить таблицу пользователей"); + e.getSQLState(); } } } diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 2bad0a6b..8a2e5ac6 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,3 +1,4 @@ + package jm.task.core.jdbc.util; import java.io.FileInputStream; @@ -8,27 +9,25 @@ import java.util.Properties; public class Util { - Connection connect; + private Connection connection; public Connection connect() { Properties property = new Properties(); try (FileInputStream input = new FileInputStream("src/main/Resources/mysql_config")) { - property.load(input); - String url = "" + property.getProperty("db.driver") + - property.getProperty("db.type") + property.getProperty("db.host") + - property.getProperty("db.port") + - property.getProperty("db.base") + ""; - String user = property.getProperty("db.login"); String password = property.getProperty("db.password"); Class.forName("com.mysql.cj.jdbc.Driver"); - - connect = DriverManager.getConnection(url, user, password); - } catch (ClassNotFoundException | SQLException | IOException e) { - System.err.format("Ошибка подключения к базе данных %s", property.getProperty("db.base")); + StringBuilder url = new StringBuilder(); + url.append(property.getProperty("db.driver")); + url.append(property.getProperty("db.type")); + url.append(property.getProperty("db.host")); + url.append(property.getProperty("db.port")); + url.append(property.getProperty("db.base")); + connection = DriverManager.getConnection(url.toString(), user, password); + } catch (SQLException | IOException | ClassNotFoundException e) { e.printStackTrace(); } - return connect; + return connection; } } \ No newline at end of file From f2b38f64c5a3efcb434a27bad6fed702330dfc75 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Sat, 19 Jun 2021 11:59:10 +0300 Subject: [PATCH 11/14] first commit --- pom.xml | 34 ++-- src/main/Resources/mysql_config | 20 +-- src/main/java/jm/task/core/jdbc/Main.java | 68 ++++++-- src/main/java/jm/task/core/jdbc/SqlQuery.java | 24 +++ .../java/jm/task/core/jdbc/dao/UserDao.java | 2 + .../core/jdbc/dao/UserDaoHibernateImpl.java | 132 ++++++++++++++- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 155 +++++++++++++----- .../java/jm/task/core/jdbc/model/User.java | 21 +-- .../task/core/jdbc/service/UserService.java | 2 + .../core/jdbc/service/UserServiceImpl.java | 20 ++- .../java/jm/task/core/jdbc/util/Util.java | 73 +++++++-- 11 files changed, 444 insertions(+), 107 deletions(-) create mode 100644 src/main/java/jm/task/core/jdbc/SqlQuery.java diff --git a/pom.xml b/pom.xml index 5b029a8a..350c0976 100644 --- a/pom.xml +++ b/pom.xml @@ -17,18 +17,31 @@ 8 + + org.apache.maven.plugins + maven-site-plugin + 3.9.1 + + UTF-8 + UTF-8 + false + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.1.2 + - - - - junit - junit - 4.12 - test - + + junit + junit + 4.12 + test + mysql @@ -45,8 +58,7 @@ org.hibernate hibernate-core - 4.3.10.Final + 5.5.2.Final - - + \ No newline at end of file diff --git a/src/main/Resources/mysql_config b/src/main/Resources/mysql_config index 8d8ad0af..8707336c 100644 --- a/src/main/Resources/mysql_config +++ b/src/main/Resources/mysql_config @@ -1,14 +1,6 @@ -# db.driver = jdbc: -# db.type = mysql: -# db.host = //localhost -# db.port = :3306 -# db.base = /jm-base-module-one -# db.login = jm-admin -# db.password = !Jmc0urs3 -spring.datasource.url = jdbc:mysql://localhost:3306/jm-base-module-one -spring.datasource.username = jm-admin -spring.datasource.password = !Jmc0urs3 -spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver - -spring.jpa.properties.hibernate.current_sessions_context_class = thread -spring.show-sql = true \ No newline at end of file +db.driver = mysql:// +db.host = localhost +db.port = :3306 +db.base = /jm-base-module-one +db.login = jm-admin +db.password = !Jmc0urs3 \ No newline at end of file diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index cf8ab709..dd886b2a 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -2,35 +2,81 @@ import jm.task.core.jdbc.model.User; import jm.task.core.jdbc.service.*; +import jm.task.core.jdbc.util.Util; + +import java.sql.Connection; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws SQLException { + UserService service2 = new UserServiceImpl(); UserService service = new UserServiceImpl(); + Connection connection = Util.connect(); + Util.printConnectionInfo(connection); + System.out.println("Создаем таблицу пользователей..."); - service.createUsersTable(); + service2.createUsersTable(); + + System.out.println("\nДобавляем пользователей..."); + service2.saveUser("Тимур", "Батрутдинов", (byte) 38); + service2.saveUser("Гарик", "Мартиросян", (byte) 44); + service2.saveUser("Гарик", "Мартиросян", (byte) 44); + service2.saveUser("Павел", "Воля", (byte) 40); + service2.saveUser("Гарик", "Харламов", (byte) 44); + service2.saveUser("Семен", "Слепаков", (byte) 41); + System.out.println(); + getUsers(service2); + System.out.print("\nУдаляем пользователя с номером id 3"); + service2.removeUserById(3); + getUsers(service2); + + System.out.println("\nМеняем данные пользователя с номером id 4"); + service2.updateUser(4, "Нурлан", "Сабуров", (byte) 36); + getUsers(service2); + + System.out.println("\nОчищаем и удаляем таблицу пользователей"); + service2.cleanUsersTable(); + service2.dropUsersTable(); + + System.out.println("Создаем таблицу пользователей..."); + service.createUsersTable(); System.out.println("Добавляем пользователей..."); - service.saveUser("Тимур", "Батрутдинов", (byte) 38); - service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Тимур", "Батрутдинов", (byte) 44); service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Гарик", "Харламов", (byte) 44); service.saveUser("Павел", "Воля", (byte) 40); + service.saveUser("Гарик", "Мартиросян", (byte) 44); service.saveUser("Семен", "Слепаков", (byte) 41); - - System.out.println("Выводим список всех пользователей..."); - List users = new ArrayList<>(service.getAllUsers()); - users.stream() - .sorted((u1, u2) -> u1.getName().compareToIgnoreCase(u2.getName())) - .forEach(System.out::println); - + List users = service.getAllUsers(); + System.out.printf("%-9s%s\n", "", "ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ"); + System.out.printf("%-1s%-6s%-10s%-15s%s\n", "", "ID", "ИМЯ", "ФАМИЛМЯ", "ВОЗРАСТ"); + System.out.println("----:-------:-----------------:--------:"); + for (User user : users) { + System.out.println(user); + } System.out.println("Очищаем и удаляем таблицу пользователей"); service.cleanUsersTable(); service.dropUsersTable(); } + + private static void getUsers(UserService service) { + List users = service.getAllUsers(); + if (service.getAllUsers().size() == 0) { + System.out.printf("\nТекущее количество пользователей пользователей: %d\n", service.getAllUsers().size()); + } else { + System.out.printf("\nТекущее количество пользователей пользователей: %d\n", service.getAllUsers().size()); + System.out.printf("%-9s%s\n", "", "ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ"); + System.out.printf("%-1s%-6s%-10s%-15s%s\n", "", "ID", "ИМЯ", "ФАМИЛМЯ", "ВОЗРАСТ"); + System.out.println("----:-------:-----------------:--------:"); + users.stream() + .sorted((u1, u2) -> u1.getName().compareToIgnoreCase(u2.getName())) + .forEach(System.out::println); + } + } } diff --git a/src/main/java/jm/task/core/jdbc/SqlQuery.java b/src/main/java/jm/task/core/jdbc/SqlQuery.java new file mode 100644 index 00000000..cd6ee787 --- /dev/null +++ b/src/main/java/jm/task/core/jdbc/SqlQuery.java @@ -0,0 +1,24 @@ +package jm.task.core.jdbc; + +public enum SqlQuery { + CREATE("CREATE TABLE IF NOT EXISTS users (id BIGINT AUTO_INCREMENT UNIQUE NOT NULL, name VARCHAR(45), lastName VARCHAR(45), age INT, PRIMARY KEY (id))"), + DROP("DROP TABLE IF EXISTS users CASCADE"), + SELECT("SELECT * FROM users"), + SELECT_USER("SELECT * FROM users WHERE name = ? AND lastName = ? AND age = ?"), + SELECT_BY_ID("SELECT * FROM users WHERE id = ?"), + INSERT("INSERT INTO users (name, lastName, age) VALUES (?, ?, ?)"), + UPDATE_USER("UPDATE users SET name = ?, lastName = ?, age = ? WHERE id = ?"), + DELETE("DELETE FROM users WHERE id = ?"), + TRUNCATE("TRUNCATE TABLE users"); + + String query; + + SqlQuery(String query) { + this.query = query; + } + + @Override + public String toString() { + return query; + } +} \ No newline at end of file diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDao.java b/src/main/java/jm/task/core/jdbc/dao/UserDao.java index 8f4beb4d..bfbac1f7 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDao.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDao.java @@ -14,6 +14,8 @@ public interface UserDao { void removeUserById(long id) throws SQLException; + void updateUser(long id, String name, String lastName, byte age); + List getAllUsers(); void cleanUsersTable() throws SQLException; diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java index 49b8a581..15f774e5 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java @@ -1,44 +1,160 @@ package jm.task.core.jdbc.dao; -import com.mysql.cj.Session; +import jm.task.core.jdbc.SqlQuery; import jm.task.core.jdbc.model.User; import jm.task.core.jdbc.util.Util; - -import java.util.Comparator; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import javax.persistence.Query; import java.util.List; public class UserDaoHibernateImpl implements UserDao { + + private static final String CREATE_TABLE = SqlQuery.CREATE.toString(); + private static final String DROP_TABLE = SqlQuery.DROP.toString(); + private static final String TRUNCATE_TABLE = SqlQuery.TRUNCATE.toString(); + private static final String SELECT_ALL = SqlQuery.SELECT.toString(); + private static final String SELECT_USER = SqlQuery.SELECT_USER.toString(); + private static final String SELECT_USER_ID = SqlQuery.SELECT_BY_ID.toString(); + private static final String INSERT_USER = SqlQuery.INSERT.toString(); + private static final String UPDATE_USER = SqlQuery.UPDATE_USER.toString(); + private static final String DELETE_USER = SqlQuery.DELETE.toString(); public UserDaoHibernateImpl() { } - @Override public void createUsersTable() { - + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + session.beginTransaction(); + Query query = session.createSQLQuery(CREATE_TABLE); + query.executeUpdate(); + session.getTransaction().commit(); + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } } @Override public void dropUsersTable() { - + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + session.beginTransaction(); + Query query = session.createSQLQuery(DROP_TABLE); + query.executeUpdate(); + session.getTransaction().commit(); + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } } @Override public void saveUser(String name, String lastName, byte age) { - + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + Query select = session.createSQLQuery(SELECT_USER); + select.setParameter(1, name) + .setParameter(2, lastName) + .setParameter(3, age); + if (((org.hibernate.query.Query)select).list().isEmpty()) { + session.beginTransaction(); + Query query = session.createSQLQuery(INSERT_USER); + query.setParameter(1, name) + .setParameter(2, lastName) + .setParameter(3, age); + query.executeUpdate(); + session.getTransaction().commit(); + System.out.println("Пользователь успешно добавлен."); + } else { + System.err.println("\nТакой пользователь уже существует."); + } + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } } @Override public void removeUserById(long id) { + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + session.beginTransaction(); + Query query = session.createSQLQuery(DELETE_USER); + query.setParameter(1, id); + query.executeUpdate(); + session.getTransaction().commit(); + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } + } + @Override + public void updateUser(long id, String name, String lastName, byte age) { + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + Query select = session.createSQLQuery(SELECT_USER_ID); + select.setParameter(1, id); + if (((org.hibernate.query.Query)select).list().isEmpty()) { + session.beginTransaction(); + Query query = session.createSQLQuery(UPDATE_USER); + query.setParameter(1, name) + .setParameter(2, lastName) + .setParameter(3, age); + query.executeUpdate(); + session.getTransaction().commit(); + System.out.println("Данные успешно изменены."); + } else { + System.out.println("В процессе изменения данных произошла ошибка."); + } + } + } catch (Exception e) { + e.printStackTrace(); + } } @Override public List getAllUsers() { - return null; + List users = null; + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + session.beginTransaction(); + users = session.createNativeQuery(SELECT_ALL, User.class).list(); + session.getTransaction().commit(); + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } + return users; } @Override public void cleanUsersTable() { + Session session = Util.getSessionFactory().openSession(); + try { + if (session != null) { + session.beginTransaction(); + Query query = session.createSQLQuery(TRUNCATE_TABLE); + query.executeUpdate(); + session.getTransaction().commit(); + session.close(); + } + } catch (HibernateException e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 2b85bf43..2ff627b4 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -1,5 +1,6 @@ package jm.task.core.jdbc.dao; +import jm.task.core.jdbc.SqlQuery; import jm.task.core.jdbc.model.User; import jm.task.core.jdbc.util.Util; import java.sql.*; @@ -7,80 +8,155 @@ import java.util.List; public class UserDaoJDBCImpl implements UserDao { - private static Util util = new Util(); - private static Connection connection; - private static final String CREATE_TABLE_SQL_REQUEST = "CREATE TABLE IF NOT EXISTS users " + - "(id BIGINT AUTO_INCREMENT UNIQUE NOT NULL, " + - "name VARCHAR(45), " + - "lastName VARCHAR(45), " + - "age INT, " + - "PRIMARY KEY (id))"; - private static final String DROP_SQL_REQUEST = "DROP TABLE IF EXISTS users CASCADE"; - private static final String INSERT_SQL_REQUEST = "INSERT INTO users (name, lastName, age) VALUES (?, ?, ?)"; - private static final String SELECT_ALL_USERS_SQL_REQUEST = "SELECT * FROM users"; - private static final String DELETE_USER_SQL_REQUEST = "DELETE FROM users WHERE id = ?"; - private static final String TRUNCATE_TABLE_SQL_REQUEST = "TRUNCATE TABLE users"; - public UserDaoJDBCImpl() { + private static String CREATE_TABLE = SqlQuery.CREATE.toString(); + private static String DROP_TABLE = SqlQuery.DROP.toString(); + private static String TRUNCATE_TABLE = SqlQuery.TRUNCATE.toString(); + private static String SELECT_ALL = SqlQuery.SELECT.toString(); + private static String SELECT_USER = SqlQuery.SELECT_USER.toString(); + private static String SELECT_USER_ID = SqlQuery.SELECT_BY_ID.toString(); + private static String INSERT_USER = SqlQuery.INSERT.toString(); + private static String UPDATE_USER = SqlQuery.UPDATE_USER.toString(); + private static String DELETE_USER = SqlQuery.DELETE.toString(); + public UserDaoJDBCImpl() { } + @Override public void createUsersTable() { - connection = util.connect(); + Connection connection = Util.connect(); try (Statement statement = connection.createStatement()) { - statement.executeUpdate(CREATE_TABLE_SQL_REQUEST); + statement.executeUpdate(CREATE_TABLE); connection.close(); } catch (SQLException e) { e.getSQLState(); } } + @Override public void dropUsersTable() { - connection = util.connect(); + Connection connection = Util.connect(); try (Statement statement = connection.createStatement()) { - statement.execute(DROP_SQL_REQUEST); + statement.execute(DROP_TABLE); connection.close(); } catch (SQLException e) { e.getSQLState(); } } + @Override public void saveUser(String name, String lastName, byte age) { - connection = util.connect(); - try (PreparedStatement preparedStatement = connection.prepareStatement(INSERT_SQL_REQUEST)) { - preparedStatement.setString(1, name); - preparedStatement.setString(2, lastName); - preparedStatement.setInt(3, age); - preparedStatement.executeUpdate(); + Connection connection = Util.connect(); + PreparedStatement pstm = null; + try { + pstm = connection.prepareStatement(SELECT_USER); + pstm.setString(1, name); + pstm.setString(2, lastName); + pstm.setByte(3, age); + ResultSet result = pstm.executeQuery(); + if (result.next()) { + System.err.print("\nТакой пользователь уже существует."); + pstm.close(); + } else { + pstm = connection.prepareStatement(INSERT_USER); + pstm.setString(1, name); + pstm.setString(2, lastName); + pstm.setByte(3, age); + int i = pstm.executeUpdate(); + if (i > 0) { + System.out.printf("\nПользователь %s %s добавлен в таблицу.\n", lastName, name); + } else { + System.err.println("\nНе удалось добавить пользователя."); + } + pstm.close(); + } connection.close(); - System.out.printf("Пользователь %s %s успешно добавлен\n", lastName, name); } catch (SQLException e) { - e.getSQLState(); + e.printStackTrace(); } } + @Override public void removeUserById(long id) { - connection = util.connect(); - try (PreparedStatement preparedStatement = connection.prepareStatement(DELETE_USER_SQL_REQUEST)) { - preparedStatement.executeUpdate(); + Connection connection = Util.connect(); + PreparedStatement pstm = null; + try { + pstm = connection.prepareStatement(SELECT_USER_ID); + pstm.setLong(1, id); + ResultSet result = pstm.executeQuery(); + if (result.next()) { + String name = result.getString("name"); + String lastName = result.getString("lastName"); + pstm = connection.prepareStatement(DELETE_USER); + pstm.setLong(1, id); + int i = pstm.executeUpdate(); + if (i > 0) { + System.out.printf("\nПользователь %s %s успешно удален\n", lastName, name); + } + } else { + System.err.println("Пользователя с таким ID не существует."); + } + pstm.close(); connection.close(); } catch (SQLException e) { e.getSQLState(); } } + + public void updateUser(long id, String name, String lastName, byte age) { + Connection connection = Util.connect(); + PreparedStatement pstm = null; + try { + connection.setAutoCommit(false); + pstm = connection.prepareStatement(SELECT_USER_ID); + pstm.setLong(1, id); + ResultSet response = pstm.executeQuery(); + if (response.next()) { + String oldUserName = response.getString("name"); + String oldUserLastName = response.getString("lastname"); + pstm = connection.prepareStatement(UPDATE_USER); + pstm.setString(1, name); + pstm.setString(2, lastName); + pstm.setByte(3, age); + pstm.setLong(4, id); + int i = pstm.executeUpdate(); + connection.commit(); + if (i > 0) { + System.out.printf("Данные пользователя %s %s успешно изменены.", oldUserLastName, oldUserName); + System.out.printf("\nТекущие данные пользователя с id %d:" + + "\nФамилия: %s Имя: %s, возраст: %d.\n", id, lastName, name, age); + connection.close(); + } else { + System.err.println("\nНе удалось обновить данные пользователя."); + connection.close(); + } + } + } catch (SQLException e) { + try { + if (connection != null) { + System.err.print("Выполняется откат транзакции"); + connection.rollback(); + } + } catch (SQLException throwables) { + e.printStackTrace(); + } + } + } + + @Override public List getAllUsers() { List all = new ArrayList<>(); - connection = util.connect(); + Connection connection = Util.connect(); try (Statement statement = connection.createStatement()) { - ResultSet response = statement.executeQuery(SELECT_ALL_USERS_SQL_REQUEST); + ResultSet response = statement.executeQuery(SELECT_ALL); while (response.next()) { - User users = new User(); - users.setId(response.getLong("id")); - users.setName(response.getString("name")); - users.setLastName(response.getString("lastName")); - users.setAge((byte)response.getInt("age")); - all.add(users); + User user = new User(); + user.setId(response.getLong("id")); + user.setName(response.getString("name")); + user.setLastName(response.getString("lastName")); + user.setAge(response.getByte("age")); + all.add(user); } connection.close(); } catch (SQLException e) { @@ -89,10 +165,11 @@ public List getAllUsers() { return all; } + @Override public void cleanUsersTable() { - connection = util.connect(); + Connection connection = Util.connect(); try (Statement statement = connection.createStatement()) { - statement.executeUpdate(TRUNCATE_TABLE_SQL_REQUEST); + statement.executeUpdate(TRUNCATE_TABLE); connection.close(); } catch (SQLException e) { e.getSQLState(); diff --git a/src/main/java/jm/task/core/jdbc/model/User.java b/src/main/java/jm/task/core/jdbc/model/User.java index 3adbd622..1125a4ac 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -1,21 +1,18 @@ package jm.task.core.jdbc.model; -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; - +import javax.persistence.*; +import java.io.Serializable; +@Entity @Table -public class User { +public class User implements Serializable { + @Id private Long id; - @Column private String name; - @Column private String lastName; - @Column private Byte age; public User() { @@ -62,10 +59,8 @@ public void setAge(Byte age) { @Override public String toString() { - return "\nПользователь: " + - " id: " + id + - " Имя: " + name + - " Фамилия: " + lastName + - " Возраст: " + age + " лет"; + return String.format("%-1s%-5d%-10s%-17s %d\n" + + "----:-------:-----------------:--------:", + "", this.id, this.name, this.lastName, this.age); } } diff --git a/src/main/java/jm/task/core/jdbc/service/UserService.java b/src/main/java/jm/task/core/jdbc/service/UserService.java index 7dde6762..733778f2 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserService.java +++ b/src/main/java/jm/task/core/jdbc/service/UserService.java @@ -17,4 +17,6 @@ public interface UserService { List getAllUsers(); void cleanUsersTable() throws SQLException; + + void updateUser(long id, String name, String lastName, byte age); } diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java index c4495cfe..078d3c5a 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -8,28 +8,46 @@ public class UserServiceImpl implements UserService { private final UserDao query = new UserDaoJDBCImpl(); + private final UserDao hQuery = new UserDaoHibernateImpl(); + @Override public void createUsersTable() throws SQLException { query.createUsersTable(); + hQuery.createUsersTable(); } + @Override public void dropUsersTable() throws SQLException { query.dropUsersTable(); + hQuery.dropUsersTable(); } + @Override public void saveUser(String name, String lastName, byte age) throws SQLException { query.saveUser(name, lastName, age); + hQuery.saveUser(name, lastName, age); } + @Override public void removeUserById(long id) throws SQLException { query.removeUserById(id); + hQuery.removeUserById(id); } + @Override + public void updateUser(long id, String name, String lastName, byte age) { + query.updateUser(id, name, lastName, age); + hQuery.updateUser(id, name, lastName, age); + } + + @Override public List getAllUsers() { - return new UserDaoJDBCImpl().getAllUsers(); + return hQuery.getAllUsers(); } + @Override public void cleanUsersTable() throws SQLException { query.cleanUsersTable(); + hQuery.cleanUsersTable(); } } diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java index 8a2e5ac6..601e271f 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,33 +1,86 @@ - package jm.task.core.jdbc.util; +import jm.task.core.jdbc.model.User; +import org.hibernate.SessionFactory; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Environment; + import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; + public class Util { - private Connection connection; - public Connection connect() { + private static SessionFactory sessionFactory; + private static Connection connection; + private static String user; + public static Connection connect() { Properties property = new Properties(); try (FileInputStream input = new FileInputStream("src/main/Resources/mysql_config")) { property.load(input); - String user = property.getProperty("db.login"); + user = property.getProperty("db.login"); String password = property.getProperty("db.password"); Class.forName("com.mysql.cj.jdbc.Driver"); StringBuilder url = new StringBuilder(); - url.append(property.getProperty("db.driver")); - url.append(property.getProperty("db.type")); - url.append(property.getProperty("db.host")); - url.append(property.getProperty("db.port")); - url.append(property.getProperty("db.base")); + url.append("jdbc:") + .append(property.getProperty("db.driver")) + .append(property.getProperty("db.host")) + .append(property.getProperty("db.port")) + .append(property.getProperty("db.base")); connection = DriverManager.getConnection(url.toString(), user, password); - } catch (SQLException | IOException | ClassNotFoundException e) { + } catch (SQLException | ClassNotFoundException | IOException e) { e.printStackTrace(); } return connection; } + + public static void printConnectionInfo(Connection connection) throws SQLException { + System.out.println(new Date()); + System.out.printf("Текущий ползователь: %s\n", user); + System.out.printf("Data base: %s\n", connection.getMetaData().getDatabaseProductName()); + System.out.printf("version: %s\n", connection.getMetaData().getDatabaseProductVersion()); + System.out.printf("Driver: %s\n", connection.getMetaData().getDriverName()); + System.out.printf("Autocommit: %s\n", connection.getAutoCommit()); + System.out.println("------------------------------------------------"); + } + + public static SessionFactory getSessionFactory() { + if (sessionFactory == null) { + try { + StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder(); + + Map settings = new HashMap<>(); + settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver"); + settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL8Dialect"); + settings.put(Environment.URL, "jdbc:mysql://localhost:3306/jm-base-module-one"); + settings.put(Environment.USER, "jm-admin"); + settings.put(Environment.PASS, "!Jmc0urs3"); + settings.put(Environment.ORDER_UPDATES, true); + settings.put(Environment.HBM2DDL_AUTO, "validate"); + settings.put(Environment.SHOW_SQL, true); + + registryBuilder.applySettings(settings); + StandardServiceRegistry registry = registryBuilder.build(); + + MetadataSources sources = new MetadataSources(registry); + sources.addAnnotatedClass(User.class); + Metadata metadata = sources.getMetadataBuilder().build(); + + sessionFactory = metadata.getSessionFactoryBuilder().build(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return sessionFactory; + } } \ No newline at end of file From 9476cdd837cb23272846c857599e1d926d416bf5 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Sat, 19 Jun 2021 12:50:34 +0300 Subject: [PATCH 12/14] first commit --- src/main/java/jm/task/core/jdbc/Main.java | 75 ++++++++++--------- .../core/jdbc/dao/UserDaoHibernateImpl.java | 2 +- .../service/UserServiceHibernateImpl.java | 46 ++++++++++++ 3 files changed, 86 insertions(+), 37 deletions(-) create mode 100644 src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index dd886b2a..4faabca6 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -10,67 +10,70 @@ public class Main { public static void main(String[] args) throws SQLException { - UserService service2 = new UserServiceImpl(); UserService service = new UserServiceImpl(); - + UserService service2 = new UserServiceHibernateImpl(); Connection connection = Util.connect(); Util.printConnectionInfo(connection); - System.out.println("Создаем таблицу пользователей..."); - service2.createUsersTable(); - + service.createUsersTable(); + getUsers(service); System.out.println("\nДобавляем пользователей..."); - service2.saveUser("Тимур", "Батрутдинов", (byte) 38); - service2.saveUser("Гарик", "Мартиросян", (byte) 44); - service2.saveUser("Гарик", "Мартиросян", (byte) 44); - service2.saveUser("Павел", "Воля", (byte) 40); - service2.saveUser("Гарик", "Харламов", (byte) 44); - service2.saveUser("Семен", "Слепаков", (byte) 41); + service.saveUser("Тимур", "Батрутдинов", (byte) 38); + service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Гарик", "Мартиросян", (byte) 44); + service.saveUser("Павел", "Воля", (byte) 40); + service.saveUser("Гарик", "Харламов", (byte) 44); + service.saveUser("Семен", "Слепаков", (byte) 41); System.out.println(); - getUsers(service2); + getUsers(service); System.out.print("\nУдаляем пользователя с номером id 3"); service2.removeUserById(3); - getUsers(service2); + getUsers(service); System.out.println("\nМеняем данные пользователя с номером id 4"); service2.updateUser(4, "Нурлан", "Сабуров", (byte) 36); - getUsers(service2); + getUsers(service); System.out.println("\nОчищаем и удаляем таблицу пользователей"); - service2.cleanUsersTable(); - service2.dropUsersTable(); + service.cleanUsersTable(); + getUsers(service); + service.dropUsersTable(); + - System.out.println("Создаем таблицу пользователей..."); - service.createUsersTable(); + + service2.createUsersTable(); + getUsers(service2); System.out.println("Добавляем пользователей..."); - service.saveUser("Тимур", "Батрутдинов", (byte) 44); - service.saveUser("Гарик", "Мартиросян", (byte) 44); - service.saveUser("Гарик", "Харламов", (byte) 44); - service.saveUser("Павел", "Воля", (byte) 40); - service.saveUser("Гарик", "Мартиросян", (byte) 44); - service.saveUser("Семен", "Слепаков", (byte) 41); + service2.saveUser("Тимур", "Батрутдинов", (byte) 44); + service2.saveUser("Гарик", "Мартиросян", (byte) 44); + service2.saveUser("Гарик", "Харламов", (byte) 44); + service2.saveUser("Павел", "Воля", (byte) 40); + service2.saveUser("Гарик", "Мартиросян", (byte) 44); + service2.saveUser("Семен", "Слепаков", (byte) 41); + getUsers(service2); - List users = service.getAllUsers(); - System.out.printf("%-9s%s\n", "", "ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ"); - System.out.printf("%-1s%-6s%-10s%-15s%s\n", "", "ID", "ИМЯ", "ФАМИЛМЯ", "ВОЗРАСТ"); - System.out.println("----:-------:-----------------:--------:"); - for (User user : users) { - System.out.println(user); - } + System.out.print("\nУдаляем пользователя с номером id 3"); + service2.removeUserById(3); + getUsers(service2); + + System.out.println("\nМеняем данные пользователя с номером id 4"); + service2.updateUser(4, "Нурлан", "Сабуров", (byte) 36); + getUsers(service2); System.out.println("Очищаем и удаляем таблицу пользователей"); - service.cleanUsersTable(); - service.dropUsersTable(); + service2.cleanUsersTable(); + getUsers(service2); + service2.dropUsersTable(); } private static void getUsers(UserService service) { List users = service.getAllUsers(); - if (service.getAllUsers().size() == 0) { - System.out.printf("\nТекущее количество пользователей пользователей: %d\n", service.getAllUsers().size()); + if (users.isEmpty()) { + System.out.printf("\nТекущее количество пользователей пользователей: %d\n", 0); } else { - System.out.printf("\nТекущее количество пользователей пользователей: %d\n", service.getAllUsers().size()); + System.out.printf("\nТекущее количество пользователей пользователей: %d\n", users.size()); System.out.printf("%-9s%s\n", "", "ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ"); System.out.printf("%-1s%-6s%-10s%-15s%s\n", "", "ID", "ИМЯ", "ФАМИЛМЯ", "ВОЗРАСТ"); System.out.println("----:-------:-----------------:--------:"); diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java index 15f774e5..79dc240d 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java @@ -71,7 +71,7 @@ public void saveUser(String name, String lastName, byte age) { .setParameter(3, age); query.executeUpdate(); session.getTransaction().commit(); - System.out.println("Пользователь успешно добавлен."); + System.out.printf("\nПользователь %s %s успешно добавлен.", lastName, name); } else { System.err.println("\nТакой пользователь уже существует."); } diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java new file mode 100644 index 00000000..37635f6b --- /dev/null +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java @@ -0,0 +1,46 @@ +package jm.task.core.jdbc.service; + +import jm.task.core.jdbc.dao.*; +import jm.task.core.jdbc.model.User; + +import java.sql.SQLException; +import java.util.List; + +public class UserServiceHibernateImpl implements UserService { + private final UserDao hQuery = new UserDaoHibernateImpl(); + + @Override + public void createUsersTable() throws SQLException { + hQuery.createUsersTable(); + } + + @Override + public void dropUsersTable() throws SQLException { + hQuery.dropUsersTable(); + } + + @Override + public void saveUser(String name, String lastName, byte age) throws SQLException { + hQuery.saveUser(name, lastName, age); + } + + @Override + public void removeUserById(long id) throws SQLException { + hQuery.removeUserById(id); + } + + @Override + public void updateUser(long id, String name, String lastName, byte age) { + hQuery.updateUser(id, name, lastName, age); + } + + @Override + public List getAllUsers() { + return hQuery.getAllUsers(); + } + + @Override + public void cleanUsersTable() throws SQLException { + hQuery.cleanUsersTable(); + } +} From ec67aa1045885f526adcb8203e0778b39564e6e8 Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Sun, 20 Jun 2021 01:43:00 +0300 Subject: [PATCH 13/14] first commit --- src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index 2ff627b4..ece69c7f 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -103,7 +103,7 @@ public void removeUserById(long id) { } } - + @Override public void updateUser(long id, String name, String lastName, byte age) { Connection connection = Util.connect(); PreparedStatement pstm = null; From 5d075d336ac360d5d5073ee9f35a6b6ce8da528d Mon Sep 17 00:00:00 2001 From: NetPatrol Date: Mon, 21 Jun 2021 06:59:17 +0300 Subject: [PATCH 14/14] first commit --- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index ece69c7f..d46e79e6 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -90,11 +90,11 @@ public void removeUserById(long id) { pstm = connection.prepareStatement(DELETE_USER); pstm.setLong(1, id); int i = pstm.executeUpdate(); - if (i > 0) { - System.out.printf("\nПользователь %s %s успешно удален\n", lastName, name); - } + String answer = i > 0 ? String.format("\nПользователь %s %s успешно удален\n", lastName, name) + : "Пользователя с таким ID не существует."; + System.out.println(answer); } else { - System.err.println("Пользователя с таким ID не существует."); + System.out.println("Ошибка соединения"); } pstm.close(); connection.close(); @@ -122,15 +122,14 @@ public void updateUser(long id, String name, String lastName, byte age) { pstm.setLong(4, id); int i = pstm.executeUpdate(); connection.commit(); - if (i > 0) { - System.out.printf("Данные пользователя %s %s успешно изменены.", oldUserLastName, oldUserName); - System.out.printf("\nТекущие данные пользователя с id %d:" + - "\nФамилия: %s Имя: %s, возраст: %d.\n", id, lastName, name, age); - connection.close(); - } else { - System.err.println("\nНе удалось обновить данные пользователя."); - connection.close(); - } + String answer = i > 0 ? String.format("Данные пользователя %s %s успешно изменены." + + "\nТекущие данные пользователя с id %d:\nФамилия: %s Имя: %s, возраст: %d.\n", + oldUserLastName, oldUserName, id, lastName, name, age) + : "\nНе удалось обновить данные пользователя."; + System.out.println(answer); + connection.close(); + } else { + System.out.println("Ошибка соединения"); } } catch (SQLException e) { try {