apuntes:dao
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| apuntes:dao [2023/06/04 21:08] – [Creación de un DAO con Jdbi] Santiago Faci | apuntes:dao [2023/10/21 11:47] (current) – [Patrón DAO] Santiago Faci | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Patrón DAO ===== | ===== Patrón DAO ===== | ||
| + | <file java Database.java> | ||
| + | public class Database { | ||
| + | |||
| + | private Connection connection; | ||
| + | |||
| + | public Connection getConnection() { | ||
| + | try { | ||
| + | Class.forName(MYSQL_DRIVER); | ||
| + | connection = DriverManager.getConnection(MYSQL_URL, | ||
| + | System.out.println(" | ||
| + | } catch (ClassNotFoundException cnfe) { | ||
| + | System.out.println(" | ||
| + | cnfe.printStackTrace(); | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | |||
| + | return connection; | ||
| + | } | ||
| + | |||
| + | public void close() { | ||
| + | try { | ||
| + | connection.close(); | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file java BookDao.java> | ||
| + | public class BookDao { | ||
| + | |||
| + | private Connection connection; | ||
| + | |||
| + | public BookDao(Connection connection) { | ||
| + | this.connection = connection; | ||
| + | } | ||
| + | |||
| + | public void add(Book book) { | ||
| + | String sql = " | ||
| + | try { | ||
| + | PreparedStatement statement = connection.prepareStatement(sql); | ||
| + | statement.setString(1, | ||
| + | statement.setString(2, | ||
| + | statement.setString(3, | ||
| + | statement.executeUpdate(); | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public boolean delete(String title) { | ||
| + | String sql = " | ||
| + | try { | ||
| + | PreparedStatement statement = connection.prepareStatement(sql); | ||
| + | statement.setString(1, | ||
| + | int rows = statement.executeUpdate(); | ||
| + | |||
| + | return rows == 1; | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | |||
| + | return false; | ||
| + | } | ||
| + | |||
| + | public boolean modify(String title, Book book) { | ||
| + | String sql = " | ||
| + | try { | ||
| + | PreparedStatement statement = connection.prepareStatement(sql); | ||
| + | statement.setString(1, | ||
| + | statement.setString(2, | ||
| + | statement.setString(3, | ||
| + | statement.setString(4, | ||
| + | int rows = statement.executeUpdate(); | ||
| + | return rows == 1; | ||
| + | } catch (SQLException sqle) { | ||
| + | | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | |||
| + | return false; | ||
| + | } | ||
| + | |||
| + | public ArrayList< | ||
| + | String sql = " | ||
| + | ArrayList< | ||
| + | try { | ||
| + | PreparedStatement statement = connection.prepareStatement(sql); | ||
| + | ResultSet resultSet = statement.executeQuery(); | ||
| + | while (resultSet.next()) { | ||
| + | Book book = new Book(); | ||
| + | book.setTitle(resultSet.getString(" | ||
| + | book.setAuthor(resultSet.getString(" | ||
| + | book.setPublisher(resultSet.getString(" | ||
| + | books.add(book); | ||
| + | } | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | |||
| + | return books; | ||
| + | } | ||
| + | |||
| + | public Book findByTitle(String title) { | ||
| + | String sql = " | ||
| + | Book book = null; | ||
| + | |||
| + | try { | ||
| + | PreparedStatement statement = connection.prepareStatement(sql); | ||
| + | statement.setString(1, | ||
| + | ResultSet resultSet = statement.executeQuery(); | ||
| + | if (resultSet.next()) { | ||
| + | book = new Book(); | ||
| + | book.setTitle(resultSet.getString(" | ||
| + | book.setAuthor(resultSet.getString(" | ||
| + | book.setPublisher(resultSet.getString(" | ||
| + | } | ||
| + | } catch (SQLException sqle) { | ||
| + | System.out.println(" | ||
| + | sqle.printStackTrace(); | ||
| + | } | ||
| + | |||
| + | return book; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| ===== Librería Jdbi 3 ===== | ===== Librería Jdbi 3 ===== | ||
| Line 8: | Line 141: | ||
| ==== Creación de un DAO con Jdbi ==== | ==== Creación de un DAO con Jdbi ==== | ||
| + | |||
| + | <code java> | ||
| + | @Data | ||
| + | @RequiredArgsConstructor | ||
| + | @AllArgsConstructor | ||
| + | @NoArgsConstructor | ||
| + | @ToString | ||
| + | public class Vehicle { | ||
| + | |||
| + | private int id; | ||
| + | @NonNull | ||
| + | private String licensePlate; | ||
| + | @NonNull | ||
| + | private String brand; | ||
| + | @NonNull | ||
| + | private String model; | ||
| + | @NonNull | ||
| + | private int kilometers; | ||
| + | @NonNull | ||
| + | private String image; | ||
| + | @NonNull | ||
| + | private LocalDate registrationDate; | ||
| + | } | ||
| + | </ | ||
| <code java> | <code java> | ||
| Line 30: | Line 187: | ||
| public interface VehicleDAO { | public interface VehicleDAO { | ||
| - | @SqlQuery(" | + | |
| @UseRowMapper(VehicleMapper.class) | @UseRowMapper(VehicleMapper.class) | ||
| List< | List< | ||
| Line 57: | Line 214: | ||
| @SqlUpdate(" | @SqlUpdate(" | ||
| void editVehicle(String licensePlate, | void editVehicle(String licensePlate, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | public class VehicleMapper implements RowMapper< | ||
| + | |||
| + | @Override | ||
| + | public Vehicle map(ResultSet rs, StatementContext ctx) throws SQLException { | ||
| + | return new Vehicle(rs.getInt(" | ||
| + | rs.getString(" | ||
| + | rs.getString(" | ||
| + | rs.getString(" | ||
| + | rs.getInt(" | ||
| + | rs.getString(" | ||
| + | DateUtils.getLocalDate(rs.getDate(" | ||
| + | ); | ||
| + | } | ||
| } | } | ||
| </ | </ | ||
apuntes/dao.1685912907.txt.gz · Last modified: by Santiago Faci
