El POJO
package com.trifulcas.DAO; // Esta clase nos representa a un registro de la tabla country // Contiene toda la información necesaria // Se llaman POJOs (Plain Java Object) public class Country { private int country_id; private String country; public Country(int country_id, String country) { super(); this.country_id = country_id; this.country = country; } public int getCountry_id() { return country_id; } public void setCountry_id(int country_id) { this.country_id = country_id; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "Country [country_id=" + country_id + ", country=" + country + "]"; } }
La capa DAO
package com.trifulcas.DAO; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; // En esta clase vamos a implementar la lógica del CRUD // Desde aquí accederemos a la base de datos public class CountryDAO { // Tenemos una variable para almacenar la conexión private Connection con; public CountryDAO() { try { // Nos conectamos en el constructor, la variable con estará disponible // para todas las funciones de la clase DAO Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", ""); } catch (Exception ex) { System.out.println(ex.getMessage()); } } // cRud // Obtengo un pais por el ID public Country getCountry(int id) { try { // Lo hago igual que hasta ahora, SQL, STATEMENT, RESULTSET String sql = "select * from country where country_id=?"; PreparedStatement st = con.prepareStatement(sql); st.setInt(1, id); ResultSet rs = st.executeQuery(); // Si hay resultado construyo un país con los datos que me devuelve la consulta if (rs.next()) { return new Country(rs.getInt("country_id"), rs.getString("country")); } } catch (Exception ex) { System.out.println(ex.getMessage()); } return null; } // cRud // Obtengo todos los paises public List<Country> getCountries() { try { List<Country> paises = new ArrayList<>(); // Lo hago igual que hasta ahora, SQL, STATEMENT, RESULTSET String sql = "select * from country"; PreparedStatement st = con.prepareStatement(sql); ResultSet rs = st.executeQuery(); // Si hay resultado construyo un país con los datos que me devuelve la consulta while (rs.next()) { paises.add(new Country(rs.getInt("country_id"), rs.getString("country"))); } return paises; } catch (Exception ex) { System.out.println(ex.getMessage()); } return null; } // Crud // Para añadir hago lo mismo, le paso un pais public int addCountry(Country pais) { try { return addCountry(pais.getCountry()); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // Crud public int addCountry(String pais) { try { // Creo el sql String sql = "insert into country(country) values (?)"; PreparedStatement st = con.prepareStatement(sql); // Añado el parámetro st.setString(1, pais); // Ejecuto return st.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } // crUd // Para modificar public int updateCountry(Country pais) { try { String sql = "update country set country=? where country_id=?"; PreparedStatement st = con.prepareStatement(sql); // Añado el parámetro st.setString(1, pais.getCountry()); st.setInt(2, pais.getCountry_id()); // Ejecuto return st.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } return 0; } }
Ejemplo de uso:
package com.trifulcas.DAO; public class Test { public static void main(String[] args) { // Nosotros aquí no tenemos nada de sql // Hemos abstraído la comunicación con la BD Country spain; CountryDAO cdao=new CountryDAO(); spain=cdao.getCountry(87); System.out.println(spain); Country foo=cdao.getCountry(1); System.out.println(foo); foo.setCountry("Guripandia"); System.out.println(cdao.addCountry(foo)); System.out.println(cdao.addCountry("bufasia")); System.out.println(cdao.getCountries()); spain.setCountry("España"); cdao.updateCountry(spain); } }