POJO categorías:
package com.mantenimiento.dao; import java.sql.Date; //Esto es un POJO que representa a los registros de la tabla category public class Categoria { // Los campos los llamamos igual que en la base de datos private int category_id; private String name; private Date last_update; // Creamos un constructor para crear fácilmente objetos public Categoria(int category_id, String name) { super(); this.category_id = category_id; this.name = name; } public Categoria(int category_id, String name, Date last_update) { this(category_id,name); this.last_update= last_update; } // Getters y setters que son imprescindibles /** * @return the category_id */ public int getCategory_id() { return category_id; } /** * @param category_id the category_id to set */ public void setCategory_id(int category_id) { this.category_id = category_id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the last_update */ public Date getLast_update() { return last_update; } /** * @param last_update the last_update to set */ public void setLast_update(Date last_update) { this.last_update = last_update; } @Override public String toString() { return "Categoria [category_id=" + category_id + ", name=" + name + ", last_update=" + last_update + "]"; } }
Acceso a datos (DAO):
package com.mantenimiento.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; public class CategoriaDAO { // Tengo que crear una conexión a la base de datos private Connection con; private int max_records = 1000; public CategoriaDAO() { try { // Me conecto a la base de datos. Si no da error todo OK Class.forName("com.mysql.cj.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", ""); } catch (Exception ex) { System.out.println(ex); } } // Tengo que implementar todas las opciones del CRUD // Obtener una categoría public Categoria getCategoria(int id) { try { String sql = "select * from category where category_id=?"; PreparedStatement stmt = con.prepareStatement(sql); stmt.setInt(1, id); ResultSet rs = stmt.executeQuery(); if (rs.next()) { Categoria categoria=new Categoria(rs.getInt("category_id"),rs.getString("name"),rs.getDate("last_update")); return categoria; }else { return null; } } catch (Exception ex) { System.out.println(ex); return null; } } // Obtener todas las categorías public List<Categoria> getCategorias() { try { // Consulta sql para obtener todas las categorías String sql = "select * from category limit ?"; PreparedStatement stmt = con.prepareStatement(sql); // Con la salvedad de que ponemos un límite de 1000 registros por si acaso stmt.setInt(1, max_records); // Obtenemos el puntero a los resultados ResultSet rs = stmt.executeQuery(); // Yo necesito almacenar todos los registros que voy obteniendo // ¿Dónde? En un ArrayList del tipo Categoria List<Categoria> categorias=new ArrayList<Categoria>(); // MIentras haya registros en la base de datos while (rs.next()) { // Creame un objeto categoría con los datos de la base de datos Categoria categoria=new Categoria(rs.getInt("category_id"),rs.getString("name"),rs.getDate("last_update")); // Lo añadimos al arraylist categorias.add(categoria); } // Devolvemos la lista con todas las categorías que hemos creado // A partir de los registros de la base de datos return categorias; } catch (Exception ex) { System.out.println(ex); return null; } } // Crear una categoría public int addCategoria(Categoria categoria) { return addCategoria(categoria.getName()); } // Crear una categoría public int addCategoria(String name) { try { String sql = "insert into category (name) values (?)"; PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, name); int res = stmt.executeUpdate(); return res; } catch (Exception ex) { System.out.println(ex); return -1; } } // Eliminar categoría public int deleteCategoria(Categoria categoria) { return deleteCategoria(categoria.getCategory_id()); } // Eliminar categoría public int deleteCategoria(int id) { try { String sql = "delete from category where category_id=?"; PreparedStatement stmt = con.prepareStatement(sql); stmt.setInt(1, id); int res = stmt.executeUpdate(); return res; } catch (Exception ex) { System.out.println(ex); return -1; } } // Modificar categoría public int updateCategoria(Categoria categoria) { try { String sql = "update category set name=? where category_id=?"; PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, categoria.getName()); stmt.setInt(2, categoria.getCategory_id()); int res = stmt.executeUpdate(); return res; } catch (Exception ex) { System.out.println(ex); return -1; } } }
Por si lo queremos probar:
package com.mantenimiento.dao; import java.util.List; public class TestDao { public static void main(String[] args) { Categoria drama=new Categoria(1,"Terrorífica"); System.out.println(drama); System.out.println(drama.getName()); CategoriaDAO modelo=new CategoriaDAO(); System.out.println(modelo.getCategorias()); List<Categoria> categorias=modelo.getCategorias(); for(Categoria categoria:categorias) { System.out.println(categoria.getName()); } } }