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);
}
}