diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..9acf478f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..712ab9d9 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__antlr_antlr_2_7_7.xml b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml new file mode 100644 index 00000000..b8d93d8e --- /dev/null +++ b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_11_4.xml b/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_11_4.xml new file mode 100644 index 00000000..d60deb07 --- /dev/null +++ b/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_11_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml new file mode 100644 index 00000000..14681ee8 --- /dev/null +++ b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 00000000..d4110417 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_25.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_25.xml new file mode 100644 index 00000000..3eb0cdbc --- /dev/null +++ b/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 00000000..f58bbc11 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml new file mode 100644 index 00000000..9ed6d297 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml new file mode 100644 index 00000000..0f9bf7c2 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml new file mode 100644 index 00000000..1d8ce405 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml new file mode 100644 index 00000000..1f907308 --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml new file mode 100644 index 00000000..d3cd0897 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml new file mode 100644 index 00000000..815ab4d8 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml new file mode 100644 index 00000000..715be298 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml b/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml new file mode 100644 index 00000000..2ab91298 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml new file mode 100644 index 00000000..c36e7171 --- /dev/null +++ b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..5ac47e8d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..882550cd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..c4958b41 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1629307908222 + + + 1629567036372 + + + 1629567166350 + + + 1629644424350 + + + 1629646148219 + + + 1629723403930 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TaskJDBC.iml b/TaskJDBC.iml new file mode 100644 index 00000000..b12d7cb4 --- /dev/null +++ b/TaskJDBC.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index f6e43b0f..3044d57b 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,7 +1,28 @@ package jm.task.core.jdbc; +import jm.task.core.jdbc.model.User; +import jm.task.core.jdbc.service.UserServiceImpl; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + public class Main { - public static void main(String[] args) { - // реализуйте алгоритм здесь + public static void main(String[] args) throws SQLException { + UserServiceImpl serv = new UserServiceImpl(); + serv.createUsersTable(); + + serv.saveUser("Petr", "Petrov", (byte) 24); + serv.saveUser("Igor", "Ivanov", (byte) 35); + serv.saveUser("Ivan", "Sidorov", (byte) 30); + serv.saveUser("Alexsander", "Romanov", (byte) 40); + + List users = serv.getAllUsers(); + for(User u: users){ + System.out.println(u.toString()); + } + + serv.cleanUsersTable(); + serv.dropUsersTable(); } } 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..ebb05fab 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(); + List getAllUsers() throws SQLException; - 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..5039d9a0 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,154 @@ 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 class UserDaoJDBCImpl extends Util implements UserDao { public UserDaoJDBCImpl() { } - public void createUsersTable() { + public void createUsersTable() throws SQLException { + Connection connection = setConnection(); + Statement statement = null; + String sql = "CREATE TABLE users (ID BIGINT NOT NULL AUTO_INCREMENT, NAME VARCHAR(100) NOT NULL, " + + "LASTNAME VARCHAR(100) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID))"; + try { + connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); + connection.setAutoCommit(false); - } + statement = connection.createStatement(); + statement.executeUpdate(sql); - public void dropUsersTable() { + connection.commit(); + } catch (SQLException e){ + System.out.println("Таблица уже существует"); + //e.printStackTrace(); + } finally { + if (statement != null){ + statement.close(); + } + if (connection != null){ + connection.close(); + } + } + } + public void dropUsersTable() throws SQLException { + Connection connection = setConnection(); + Statement statement = null; + String sql = "DROP TABLE users"; + try { + statement = connection.createStatement(); + statement.executeUpdate(sql); + } catch (SQLException e){ + //ignored + } finally { + if (statement != null){ + statement.close(); + } + if (connection != null){ + connection.close(); + } + } } - public void saveUser(String name, String lastName, byte age) { + public void saveUser(String name, String lastName, byte age) throws SQLException { + Connection connection = setConnection(); + PreparedStatement preparestatement = null; + String sql = "INSERT INTO users (NAME, LASTNAME, AGE) VALUES (?, ?, ?)"; + try { + preparestatement = connection.prepareStatement(sql); + preparestatement.setString(1, name); + preparestatement.setString(2, lastName); + preparestatement.setInt(3, age); + + preparestatement.executeUpdate(); + System.out.println("User с именем " + name + " добавлен в базу данных "); + } catch (SQLException e){ + //ignored + } finally { + if (preparestatement != null){ + preparestatement.close(); + } + if (connection != null){ + connection.close(); + } + } } - public void removeUserById(long id) { + public void removeUserById(long id) throws SQLException { + Connection connection = setConnection(); + PreparedStatement preparestatement = null; + String sql = "DELETE FROM users WHERE ID = (?)"; + try { + preparestatement = connection.prepareStatement(sql); - } + preparestatement.setInt(1, (int) id); + preparestatement.executeUpdate(); - public List getAllUsers() { - return null; + } catch (SQLException e){ + //ignored + } finally { + if (preparestatement != null){ + preparestatement.close(); + } + if (connection != null){ + connection.close(); + } + } } - public void cleanUsersTable() { + public List getAllUsers() throws SQLException { + Connection connection = setConnection(); + Statement statement = null; + ResultSet result; + String sql = "SELECT * FROM users"; + List userList = new ArrayList<>(); + try { + statement = connection.createStatement(); + result = statement.executeQuery(sql); + while (result.next()){ + User us = new User(result.getString(2), result.getString(3), (byte) result.getInt(4)); + us.setId((long) result.getInt(1)); + //System.out.println(us.toString()); + userList.add(us); + } + } catch (SQLException e) { + //ignored + } finally { + if (statement != null){ + statement.close(); + } + if (connection != null){ + connection.close(); + } + } + return userList; + } + public void cleanUsersTable() throws SQLException { + Connection connection = setConnection(); + Statement statement = null; + String sql = "TRUNCATE TABLE users"; + try { + statement = connection.createStatement(); + statement.executeUpdate(sql); + } catch (SQLException e){ + System.out.println("Таблицы не существует"); + } finally { + if (statement != null){ + statement.close(); + } + if (connection != null){ + connection.close(); + } + } } } 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..f8eef6ad 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -18,7 +18,7 @@ public class User { @Column private Byte age; - public User() { + public User(int anInt, String string, String resultString, byte resultInt) { } @@ -29,34 +29,47 @@ public User(String name, String lastName, Byte age) { } public Long getId() { + return id; } public void setId(Long id) { + this.id = id; } public String getName() { + return name; } public void setName(String name) { + this.name = name; } public String getLastName() { + return lastName; } public void setLastName(String lastName) { + this.lastName = lastName; } public Byte getAge() { + return age; } public void setAge(Byte age) { + this.age = age; } + @Override + public String toString(){ + + return id + " " + name + " " + lastName + " " + 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 80542c68..e1d1a7c4 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(); + List getAllUsers() throws SQLException; - 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..30c2a9a6 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,38 @@ package jm.task.core.jdbc.service; +import jm.task.core.jdbc.dao.UserDaoJDBCImpl; import jm.task.core.jdbc.model.User; +import java.sql.SQLException; import java.util.List; -public class UserServiceImpl implements UserService { - public void createUsersTable() { +public class UserServiceImpl extends UserDaoJDBCImpl implements UserService { - } - - public void dropUsersTable() { + UserDaoJDBCImpl dao = new UserDaoJDBCImpl(); + public void createUsersTable() throws SQLException { + dao.createUsersTable(); } - public void saveUser(String name, String lastName, byte age) { - + public void dropUsersTable() throws SQLException { + dao.dropUsersTable(); } - public void removeUserById(long id) { - + public void saveUser(String name, String lastName, byte age) throws SQLException { + //UserDaoJDBCImpl dao = new UserDaoJDBCImpl(); + dao.saveUser(name, lastName, age); } - public List getAllUsers() { - return null; + public void removeUserById(long id) throws SQLException { + dao.removeUserById(id); } - public void cleanUsersTable() { + public List getAllUsers() throws SQLException { + + return dao.getAllUsers(); + } + public void cleanUsersTable() throws SQLException { + dao.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..17f7ba3f 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,29 @@ package jm.task.core.jdbc.util; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + public class Util { - // реализуйте настройку соеденения с БД + private static final String BD_URL = "jdbc:mysql://localhost:3306/idea"; + private static final String BD_USER = "root"; + private static final String BD_PASSWORD = "qw009719er"; + private static final String BD_DRIVER = "com.mysql.cj.jdbc.Driver"; + + + + public Connection setConnection() { + Connection con = null; + try { + Class.forName(BD_DRIVER); + con = DriverManager.getConnection(BD_URL, BD_USER, BD_PASSWORD); + //System.out.println("Соединение установленно"); + } catch (SQLException | ClassNotFoundException e){ + e.printStackTrace(); + System.out.println("Ошибка соединения"); + } + return con; + } + + } diff --git a/target/classes/jm/task/core/jdbc/Main.class b/target/classes/jm/task/core/jdbc/Main.class new file mode 100644 index 00000000..4e1b2ff3 Binary files /dev/null and b/target/classes/jm/task/core/jdbc/Main.class differ diff --git a/target/classes/jm/task/core/jdbc/dao/UserDao.class b/target/classes/jm/task/core/jdbc/dao/UserDao.class new file mode 100644 index 00000000..486e637c Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDao.class differ diff --git a/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class b/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class new file mode 100644 index 00000000..cf21855d Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class differ diff --git a/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class b/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class new file mode 100644 index 00000000..01e6b8a0 Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class differ diff --git a/target/classes/jm/task/core/jdbc/model/User.class b/target/classes/jm/task/core/jdbc/model/User.class new file mode 100644 index 00000000..bf701bf9 Binary files /dev/null and b/target/classes/jm/task/core/jdbc/model/User.class differ diff --git a/target/classes/jm/task/core/jdbc/service/UserService.class b/target/classes/jm/task/core/jdbc/service/UserService.class new file mode 100644 index 00000000..75afa899 Binary files /dev/null and b/target/classes/jm/task/core/jdbc/service/UserService.class differ diff --git a/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class b/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class new file mode 100644 index 00000000..0a6cb08a Binary files /dev/null and b/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class differ diff --git a/target/classes/jm/task/core/jdbc/util/Util.class b/target/classes/jm/task/core/jdbc/util/Util.class new file mode 100644 index 00000000..964acf60 Binary files /dev/null and b/target/classes/jm/task/core/jdbc/util/Util.class differ diff --git a/target/test-classes/UserServiceTest.class b/target/test-classes/UserServiceTest.class new file mode 100644 index 00000000..3e86d3f4 Binary files /dev/null and b/target/test-classes/UserServiceTest.class differ