From 7626ea9f432ffe3c63806a1c758b8c6a35553a44 Mon Sep 17 00:00:00 2001 From: foxstudent106239 Date: Tue, 20 Aug 2024 02:32:06 +0300 Subject: [PATCH 1/3] full --- .../java/mate/academy/ConnectionUtil.java | 36 +++++ src/main/java/mate/academy/Main.java | 16 ++- src/main/java/mate/academy/dao/BookDao.java | 18 +++ .../java/mate/academy/dao/BookDaoImpl.java | 123 ++++++++++++++++++ src/main/java/mate/academy/domain/Book.java | 47 +++++++ src/main/resources/db.properties | 3 + src/main/resources/init_db.sql | 7 + 7 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 src/main/java/mate/academy/ConnectionUtil.java create mode 100644 src/main/java/mate/academy/dao/BookDao.java create mode 100644 src/main/java/mate/academy/dao/BookDaoImpl.java create mode 100644 src/main/java/mate/academy/domain/Book.java create mode 100644 src/main/resources/db.properties create mode 100644 src/main/resources/init_db.sql diff --git a/src/main/java/mate/academy/ConnectionUtil.java b/src/main/java/mate/academy/ConnectionUtil.java new file mode 100644 index 00000000..c05c1e57 --- /dev/null +++ b/src/main/java/mate/academy/ConnectionUtil.java @@ -0,0 +1,36 @@ +package mate.academy; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + +public class ConnectionUtil { + private static final String PROPERTIES_FILE_PATH = "src/main/resources/db.properties"; + private static final String DATABASE_URL = "db.url"; + private static final String DATABASE_USER_NAME = "db.username"; + private static final String DATABASE_USER_PASSWORD = "db.password"; + private static final Properties properties = new Properties(); + + static { + readDatabaseFileProperties(); + } + + private static final void readDatabaseFileProperties() { + try (InputStream inputStreamProperties = new FileInputStream(PROPERTIES_FILE_PATH)) { + properties.load(inputStreamProperties); + } catch (IOException e) { + throw new RuntimeException("Cannot read properties file", e); + } + } + + public static Connection connectToDatabase() throws SQLException { + String url = properties.getProperty(DATABASE_URL); + String username = properties.getProperty(DATABASE_USER_NAME); + String password = properties.getProperty(DATABASE_USER_PASSWORD); + return DriverManager.getConnection(url, username, password); + } +} diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 0058fbf9..b498c92e 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -1,7 +1,21 @@ package mate.academy; +import java.math.BigDecimal; +import mate.academy.dao.BookDao; +import mate.academy.domain.Book; +import mate.academy.lib.Injector; + public class Main { - public static void main(String[] args) { + private static final Injector injector = Injector.getInstance("mate.academy.dao"); + public static void main(String[] args) { + BookDao bookDao = (BookDao) injector.getInstance(BookDao.class); + Book book = new Book("The witcher", new BigDecimal("195.00")); + bookDao.create(book); + bookDao.create(book); + bookDao.update(book); + bookDao.deleteById(1); + bookDao.findAll(); + bookDao.findById(2); } } diff --git a/src/main/java/mate/academy/dao/BookDao.java b/src/main/java/mate/academy/dao/BookDao.java new file mode 100644 index 00000000..4b6f6983 --- /dev/null +++ b/src/main/java/mate/academy/dao/BookDao.java @@ -0,0 +1,18 @@ +package mate.academy.dao; + +import java.util.List; +import java.util.Optional; +import mate.academy.domain.Book; + +public interface BookDao { + + Book create(Book book); + + Optional findById(int id); + + List findAll(); + + Book update(Book book); + + boolean deleteById(int id); +} diff --git a/src/main/java/mate/academy/dao/BookDaoImpl.java b/src/main/java/mate/academy/dao/BookDaoImpl.java new file mode 100644 index 00000000..796b7337 --- /dev/null +++ b/src/main/java/mate/academy/dao/BookDaoImpl.java @@ -0,0 +1,123 @@ +package mate.academy.dao; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import mate.academy.ConnectionUtil; +import mate.academy.domain.Book; +import mate.academy.lib.Dao; + +@Dao +public class BookDaoImpl implements BookDao { + private static final String CREATE_BOOK_QUERY = "INSERT INTO book (title, price) VALUES (?, ?)"; + private static final String FIND_BOOK_BY_ID_QUERY = "SELECT * FROM book WHERE id = ?"; + private static final String FIND_ALL_BOOK_QUERY = "SELECT * FROM book"; + private static final String UPDATE_BOOK_QUERY = "UPDATE book SET title = ?, " + + "price = ? WHERE id = ?"; + private static final String DELETE_BOOK_QUERY = "DELETE FROM book WHERE id = ?"; + + @Override + public Book create(Book book) { + Book createdBook; + try (Connection connection = ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = connection.prepareStatement(CREATE_BOOK_QUERY, + Statement.RETURN_GENERATED_KEYS)) { + preparedStatement.setString(2, book.getTitle()); + preparedStatement.setBigDecimal(3, book.getPrice()); + preparedStatement.execute(); + try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) { + resultSet.next(); + createdBook = new Book( + resultSet.getString("title"), + resultSet.getBigDecimal("price")); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return createdBook; + } + + @Override + public Optional findById(int id) { + Book findBookById = null; + try (Connection connection = ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = + connection.prepareStatement(FIND_BOOK_BY_ID_QUERY, + Statement.RETURN_GENERATED_KEYS)) { + preparedStatement.setLong(1, id); + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()) { + Long bookId = resultSet.getLong("id"); + String title = resultSet.getString("title"); + BigDecimal price = resultSet.getBigDecimal("price"); + findBookById = new Book(bookId, title, price); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return Optional.ofNullable(findBookById); + } + + @Override + public List findAll() { + List foundBooks = new ArrayList<>(); + try (Connection connection = ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = + connection.prepareStatement(FIND_ALL_BOOK_QUERY, + Statement.RETURN_GENERATED_KEYS)) { + + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()) { + Long bookId = resultSet.getLong("id"); + String title = resultSet.getString("title"); + BigDecimal price = resultSet.getBigDecimal("price"); + foundBooks.add(new Book(bookId, title, price)); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return foundBooks; + } + + @Override + public Book update(Book book) { + Book updatedBook = null; + try (Connection connection = ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_BOOK_QUERY, + Statement.RETURN_GENERATED_KEYS)) { + preparedStatement.setString(2, book.getTitle()); + preparedStatement.setBigDecimal(3, book.getPrice()); + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()) { + Long bookId = resultSet.getLong("id"); + String title = resultSet.getString("title"); + BigDecimal price = resultSet.getBigDecimal("price"); + updatedBook = new Book(bookId, title, price); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return updatedBook; + } + + @Override + public boolean deleteById(int id) { + boolean isDeleted; + try (Connection connection = ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = connection.prepareStatement(DELETE_BOOK_QUERY, + Statement.RETURN_GENERATED_KEYS)) { + preparedStatement.setLong(1, id); + isDeleted = preparedStatement.execute(); + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return isDeleted; + } +} + diff --git a/src/main/java/mate/academy/domain/Book.java b/src/main/java/mate/academy/domain/Book.java new file mode 100644 index 00000000..267af410 --- /dev/null +++ b/src/main/java/mate/academy/domain/Book.java @@ -0,0 +1,47 @@ +package mate.academy.domain; + +import java.math.BigDecimal; + +public class Book { + private Long id; + private String title; + private BigDecimal price; + + public Book() { + } + + public Book(String title, BigDecimal price) { + this.title = title; + this.price = price; + } + + public Book(Long id, String title, BigDecimal price) { + this.id = id; + this.title = title; + this.price = price; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } +} diff --git a/src/main/resources/db.properties b/src/main/resources/db.properties new file mode 100644 index 00000000..71373e99 --- /dev/null +++ b/src/main/resources/db.properties @@ -0,0 +1,3 @@ +db.url=jdbc:mysql://localhost:3307 +db.username=postgres +db.password=root diff --git a/src/main/resources/init_db.sql b/src/main/resources/init_db.sql new file mode 100644 index 00000000..af058f5e --- /dev/null +++ b/src/main/resources/init_db.sql @@ -0,0 +1,7 @@ +create schema if not exists test; + +create table if not exists book ( + book_id serial primary key, + title varchar(20), + price decimal +); \ No newline at end of file From 17c6ee6016b8b32222ded30d77a03b329e9779d7 Mon Sep 17 00:00:00 2001 From: foxstudent106239 Date: Tue, 20 Aug 2024 02:41:04 +0300 Subject: [PATCH 2/3] fix --- src/main/java/mate/academy/dao/BookDaoImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/mate/academy/dao/BookDaoImpl.java b/src/main/java/mate/academy/dao/BookDaoImpl.java index 796b7337..d644a3be 100644 --- a/src/main/java/mate/academy/dao/BookDaoImpl.java +++ b/src/main/java/mate/academy/dao/BookDaoImpl.java @@ -87,7 +87,7 @@ public List findAll() { @Override public Book update(Book book) { - Book updatedBook = null; + Book updatedBook = book; try (Connection connection = ConnectionUtil.connectToDatabase(); PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_BOOK_QUERY, Statement.RETURN_GENERATED_KEYS)) { @@ -95,10 +95,10 @@ public Book update(Book book) { preparedStatement.setBigDecimal(3, book.getPrice()); ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { - Long bookId = resultSet.getLong("id"); String title = resultSet.getString("title"); BigDecimal price = resultSet.getBigDecimal("price"); - updatedBook = new Book(bookId, title, price); + updatedBook.setTitle(title); + updatedBook.setPrice(price); } } catch (SQLException throwables) { throw new RuntimeException(throwables); @@ -110,8 +110,8 @@ public Book update(Book book) { public boolean deleteById(int id) { boolean isDeleted; try (Connection connection = ConnectionUtil.connectToDatabase(); - PreparedStatement preparedStatement = connection.prepareStatement(DELETE_BOOK_QUERY, - Statement.RETURN_GENERATED_KEYS)) { + PreparedStatement preparedStatement = + connection.prepareStatement(DELETE_BOOK_QUERY)) { preparedStatement.setLong(1, id); isDeleted = preparedStatement.execute(); } catch (SQLException throwables) { From ad6dd1eab763564dbb2dc70fad264f090de64db8 Mon Sep 17 00:00:00 2001 From: foxstudent106239 Date: Tue, 20 Aug 2024 15:39:52 +0300 Subject: [PATCH 3/3] all fix + add custom exception --- .../academy/{ => util}/ConnectionUtil.java | 2 +- .../java/mate/academy/{ => util}/Main.java | 8 +- .../mate/academy/{ => util}/dao/BookDao.java | 5 +- .../academy/{ => util}/dao/BookDaoImpl.java | 100 ++++++++++-------- .../mate/academy/{ => util}/domain/Book.java | 15 ++- .../exception/DataProcessingException.java | 11 ++ .../java/mate/academy/{ => util}/lib/Dao.java | 2 +- .../mate/academy/{ => util}/lib/Injector.java | 2 +- src/main/resources/db.properties | 6 +- src/main/resources/init_db.sql | 2 +- 10 files changed, 94 insertions(+), 59 deletions(-) rename src/main/java/mate/academy/{ => util}/ConnectionUtil.java (98%) rename src/main/java/mate/academy/{ => util}/Main.java (78%) rename src/main/java/mate/academy/{ => util}/dao/BookDao.java (77%) rename src/main/java/mate/academy/{ => util}/dao/BookDaoImpl.java (53%) rename src/main/java/mate/academy/{ => util}/domain/Book.java (72%) create mode 100644 src/main/java/mate/academy/util/exception/DataProcessingException.java rename src/main/java/mate/academy/{ => util}/lib/Dao.java (82%) rename src/main/java/mate/academy/{ => util}/lib/Injector.java (99%) diff --git a/src/main/java/mate/academy/ConnectionUtil.java b/src/main/java/mate/academy/util/ConnectionUtil.java similarity index 98% rename from src/main/java/mate/academy/ConnectionUtil.java rename to src/main/java/mate/academy/util/ConnectionUtil.java index c05c1e57..f7d485e8 100644 --- a/src/main/java/mate/academy/ConnectionUtil.java +++ b/src/main/java/mate/academy/util/ConnectionUtil.java @@ -1,4 +1,4 @@ -package mate.academy; +package mate.academy.util; import java.io.FileInputStream; import java.io.IOException; diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/util/Main.java similarity index 78% rename from src/main/java/mate/academy/Main.java rename to src/main/java/mate/academy/util/Main.java index b498c92e..b9540419 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/util/Main.java @@ -1,9 +1,9 @@ -package mate.academy; +package mate.academy.util; import java.math.BigDecimal; -import mate.academy.dao.BookDao; -import mate.academy.domain.Book; -import mate.academy.lib.Injector; +import mate.academy.util.dao.BookDao; +import mate.academy.util.domain.Book; +import mate.academy.util.lib.Injector; public class Main { private static final Injector injector = Injector.getInstance("mate.academy.dao"); diff --git a/src/main/java/mate/academy/dao/BookDao.java b/src/main/java/mate/academy/util/dao/BookDao.java similarity index 77% rename from src/main/java/mate/academy/dao/BookDao.java rename to src/main/java/mate/academy/util/dao/BookDao.java index 4b6f6983..4fbdbdc4 100644 --- a/src/main/java/mate/academy/dao/BookDao.java +++ b/src/main/java/mate/academy/util/dao/BookDao.java @@ -1,11 +1,10 @@ -package mate.academy.dao; +package mate.academy.util.dao; import java.util.List; import java.util.Optional; -import mate.academy.domain.Book; +import mate.academy.util.domain.Book; public interface BookDao { - Book create(Book book); Optional findById(int id); diff --git a/src/main/java/mate/academy/dao/BookDaoImpl.java b/src/main/java/mate/academy/util/dao/BookDaoImpl.java similarity index 53% rename from src/main/java/mate/academy/dao/BookDaoImpl.java rename to src/main/java/mate/academy/util/dao/BookDaoImpl.java index d644a3be..a585645c 100644 --- a/src/main/java/mate/academy/dao/BookDaoImpl.java +++ b/src/main/java/mate/academy/util/dao/BookDaoImpl.java @@ -1,4 +1,4 @@ -package mate.academy.dao; +package mate.academy.util.dao; import java.math.BigDecimal; import java.sql.Connection; @@ -9,13 +9,15 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import mate.academy.ConnectionUtil; -import mate.academy.domain.Book; -import mate.academy.lib.Dao; +import mate.academy.util.ConnectionUtil; +import mate.academy.util.domain.Book; +import mate.academy.util.exception.DataProcessingException; +import mate.academy.util.lib.Dao; @Dao public class BookDaoImpl implements BookDao { - private static final String CREATE_BOOK_QUERY = "INSERT INTO book (title, price) VALUES (?, ?)"; + private static final String CREATE_BOOK_QUERY = "INSERT INTO book (id, title, price) " + + "VALUES (?, ?, ?)"; private static final String FIND_BOOK_BY_ID_QUERY = "SELECT * FROM book WHERE id = ?"; private static final String FIND_ALL_BOOK_QUERY = "SELECT * FROM book"; private static final String UPDATE_BOOK_QUERY = "UPDATE book SET title = ?, " @@ -24,73 +26,73 @@ public class BookDaoImpl implements BookDao { @Override public Book create(Book book) { - Book createdBook; try (Connection connection = ConnectionUtil.connectToDatabase(); PreparedStatement preparedStatement = connection.prepareStatement(CREATE_BOOK_QUERY, Statement.RETURN_GENERATED_KEYS)) { + preparedStatement.setLong(1, book.getId()); preparedStatement.setString(2, book.getTitle()); preparedStatement.setBigDecimal(3, book.getPrice()); preparedStatement.execute(); - try (ResultSet resultSet = preparedStatement.getGeneratedKeys()) { - resultSet.next(); - createdBook = new Book( - resultSet.getString("title"), - resultSet.getBigDecimal("price")); + int affectedRows = preparedStatement.executeUpdate(); + if (affectedRows < 1) { + throw new DataProcessingException( + "Expected to insert at least 1 row, but was 0"); } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); + try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) { + if (generatedKeys.next()) { + Long id = generatedKeys.getObject(1, Long.class); + book.setId(id); + } + } + } catch (SQLException e) { + throw new DataProcessingException("Can't add a new book" + book, e); } - return createdBook; + return book; } @Override public Optional findById(int id) { - Book findBookById = null; + Optional findBookById = Optional.empty(); try (Connection connection = ConnectionUtil.connectToDatabase(); PreparedStatement preparedStatement = - connection.prepareStatement(FIND_BOOK_BY_ID_QUERY, - Statement.RETURN_GENERATED_KEYS)) { + connection.prepareStatement(FIND_BOOK_BY_ID_QUERY)) { preparedStatement.setLong(1, id); ResultSet resultSet = preparedStatement.executeQuery(); - while (resultSet.next()) { - Long bookId = resultSet.getLong("id"); - String title = resultSet.getString("title"); - BigDecimal price = resultSet.getBigDecimal("price"); - findBookById = new Book(bookId, title, price); + if (resultSet.next()) { + findBookById = Optional.of(mapResutSetToBook(resultSet, id)); } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); + } catch (SQLException e) { + throw new DataProcessingException("Can't find book by id" + id, e); } - return Optional.ofNullable(findBookById); + return findBookById; } @Override public List findAll() { - List foundBooks = new ArrayList<>(); + List books = new ArrayList<>(); try (Connection connection = ConnectionUtil.connectToDatabase(); PreparedStatement preparedStatement = - connection.prepareStatement(FIND_ALL_BOOK_QUERY, - Statement.RETURN_GENERATED_KEYS)) { + connection.prepareStatement(FIND_ALL_BOOK_QUERY)) { ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { Long bookId = resultSet.getLong("id"); - String title = resultSet.getString("title"); - BigDecimal price = resultSet.getBigDecimal("price"); - foundBooks.add(new Book(bookId, title, price)); + books.add(mapResutSetToBook(resultSet, bookId)); } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); + } catch (SQLException e) { + throw new DataProcessingException("Can't find all books", e); } - return foundBooks; + return books; } @Override public Book update(Book book) { Book updatedBook = book; - try (Connection connection = ConnectionUtil.connectToDatabase(); - PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_BOOK_QUERY, - Statement.RETURN_GENERATED_KEYS)) { + try (Connection connection = + ConnectionUtil.connectToDatabase(); + PreparedStatement preparedStatement = + connection.prepareStatement(UPDATE_BOOK_QUERY)) { + preparedStatement.setLong(1, book.getId()); preparedStatement.setString(2, book.getTitle()); preparedStatement.setBigDecimal(3, book.getPrice()); ResultSet resultSet = preparedStatement.executeQuery(); @@ -100,24 +102,34 @@ public Book update(Book book) { updatedBook.setTitle(title); updatedBook.setPrice(price); } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); + } catch (SQLException e) { + throw new DataProcessingException("Can't update book: " + book, e); } return updatedBook; } @Override public boolean deleteById(int id) { - boolean isDeleted; try (Connection connection = ConnectionUtil.connectToDatabase(); PreparedStatement preparedStatement = connection.prepareStatement(DELETE_BOOK_QUERY)) { preparedStatement.setLong(1, id); - isDeleted = preparedStatement.execute(); - } catch (SQLException throwables) { - throw new RuntimeException(throwables); + return preparedStatement.executeUpdate() > 0; + } catch (SQLException e) { + throw new DataProcessingException("Can't delete book by id: " + id, e); + } + } + + private Book mapResutSetToBook(ResultSet resultSet, long id) { + Book book; + try { + String title = resultSet.getString("title"); + BigDecimal price = resultSet.getBigDecimal("price"); + book = new Book(id, title, price); + } catch (SQLException e) { + throw new DataProcessingException("Can't map result set to book: " + resultSet, e); } - return isDeleted; + return book; } } diff --git a/src/main/java/mate/academy/domain/Book.java b/src/main/java/mate/academy/util/domain/Book.java similarity index 72% rename from src/main/java/mate/academy/domain/Book.java rename to src/main/java/mate/academy/util/domain/Book.java index 267af410..0f234210 100644 --- a/src/main/java/mate/academy/domain/Book.java +++ b/src/main/java/mate/academy/util/domain/Book.java @@ -1,4 +1,4 @@ -package mate.academy.domain; +package mate.academy.util.domain; import java.math.BigDecimal; @@ -44,4 +44,17 @@ public BigDecimal getPrice() { public void setPrice(BigDecimal price) { this.price = price; } + + @Override + public String toString() { + return "Book{" + + "id=" + + id + + ", title='" + + title + + '\'' + + ", price=" + + price + + '}'; + } } diff --git a/src/main/java/mate/academy/util/exception/DataProcessingException.java b/src/main/java/mate/academy/util/exception/DataProcessingException.java new file mode 100644 index 00000000..6f49375c --- /dev/null +++ b/src/main/java/mate/academy/util/exception/DataProcessingException.java @@ -0,0 +1,11 @@ +package mate.academy.util.exception; + +public class DataProcessingException extends RuntimeException { + public DataProcessingException(String message) { + super(message); + } + + public DataProcessingException(String message, Throwable cause) { + super(message); + } +} diff --git a/src/main/java/mate/academy/lib/Dao.java b/src/main/java/mate/academy/util/lib/Dao.java similarity index 82% rename from src/main/java/mate/academy/lib/Dao.java rename to src/main/java/mate/academy/util/lib/Dao.java index f558d09a..95f53487 100644 --- a/src/main/java/mate/academy/lib/Dao.java +++ b/src/main/java/mate/academy/util/lib/Dao.java @@ -1,4 +1,4 @@ -package mate.academy.lib; +package mate.academy.util.lib; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/mate/academy/lib/Injector.java b/src/main/java/mate/academy/util/lib/Injector.java similarity index 99% rename from src/main/java/mate/academy/lib/Injector.java rename to src/main/java/mate/academy/util/lib/Injector.java index ea13c49e..73c9e72a 100644 --- a/src/main/java/mate/academy/lib/Injector.java +++ b/src/main/java/mate/academy/util/lib/Injector.java @@ -1,4 +1,4 @@ -package mate.academy.lib; +package mate.academy.util.lib; import java.io.File; import java.io.IOException; diff --git a/src/main/resources/db.properties b/src/main/resources/db.properties index 71373e99..8444d764 100644 --- a/src/main/resources/db.properties +++ b/src/main/resources/db.properties @@ -1,3 +1,3 @@ -db.url=jdbc:mysql://localhost:3307 -db.username=postgres -db.password=root +db.url=jdbc:mysql://localhost:3307/test +db.username= +db.password= diff --git a/src/main/resources/init_db.sql b/src/main/resources/init_db.sql index af058f5e..becf3bcc 100644 --- a/src/main/resources/init_db.sql +++ b/src/main/resources/init_db.sql @@ -1,7 +1,7 @@ create schema if not exists test; create table if not exists book ( - book_id serial primary key, + book_id bigint primary key, title varchar(20), price decimal ); \ No newline at end of file