Ejemplo MVC Con MySQL
Ejemplo MVC Con MySQL
La solución.
Se aplica el MVC permitiendo independizar la lógica y la parte visual del sistema usando para eso
un controlador que administra los procesos sirviendo como puente entre estos.
para la BD se usa MySql, reutilizando la BD creada en el ejemplo de conexión con Java, el Scritp
es el siguiente.
1
2 CREATE DATABASE /*!32312 IF NOT EXISTS*/`usuarios` /*!40100 DEFAULT CHARACTER SET latin1 */;
3
4 USE `usuarios`;
5
6 /*Table structure for table `persona` */
7
DROP TABLE IF EXISTS `persona`;
8
9 CREATE TABLE `persona` (
10 `id` int(10) NOT NULL,
11 `nombre` varchar(30) default NULL,
`edad` int(3) default NULL,
12 `profesion` varchar(30) default NULL,
13 `telefono` decimal(10,0) default NULL,
14 PRIMARY KEY (`id`)
15 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
16
/*Data for the table `persona` */
17
18
De esta forma se crea la Base de Datos a la que se va a apuntar, la cual contiene solo una
tabla Persona con la que se realizan todas las operaciones CRUD.
El Modelo.
Como se mencionó, en el modelo tenemos la lógica de negocio, serán todas las clases vinculadas
con el CRUD a nivel interno, que en ultimas es en lo que gira nuestro sistema.
Clase Logica.
Esta clase permite realizar las operaciones asociadas a la lógica de negocio como tal, desde ella
realizamos las validaciones y llamados a las operaciones CRUD del sistema.
1
2 public void validarRegistro(PersonaVo miPersona) {
3 PersonaDao miPersonaDao;
/*Valida que solo se ingresen id de 3 digitos*/
4 if (miPersona.getIdPersona() > 99) {
5 miPersonaDao = new PersonaDao();
6 miPersonaDao.registrarPersona(miPersona);
}else {
7 JOptionPane.showMessageDialog(null,"El documento de la persona debe" +
8 " ser mas de 3 digitos","Advertencia",JOptionPane.WARNING_MESSAGE);
9 }
10 }
11
Clase Conexión.
Clase PersonaVo.
1
2 /**
3 * @return the idPersona
4 */
public Integer getIdPersona() {
5 return idPersona;
6 }
7 /**
* @param idPersona the idPersona to set
8 */
9 public void setIdPersona(Integer idPersona) {
10 this.idPersona = idPersona;
}
11
12
Clase PersonaDao.
1
2
public void eliminarPersona(String codigo)
3 {
4 Conexion conex= new Conexion();
5 try {
6 Statement estatuto = conex.getConnection().createStatement();
estatuto.executeUpdate("DELETE FROM persona WHERE id='"+codigo+"'");
7 JOptionPane.showMessageDialog(null, " Se ha Eliminado" +
8 " Correctamente","Información",JOptionPane.INFORMATION_MESSAGE);
9 estatuto.close();
conex.desconectar();
10
11 } catch (SQLException e) {
12 System.out.println(e.getMessage());
JOptionPane.showMessageDialog(null, "No se Elimino");
13 }
14 }
15
16
La Vista.
Aquí se define la parte visual del sistema, en la vista estableceremos todas las ventanas o
interfaces gráficas de usuario, mediante las cuales representamos todo el modelo permitiendo
la interacción entre la aplicación y el cliente.
Clase VentanaPrincipal.
Esta clase representa la ventana inicial de la aplicación, posee un área de texto con una pequeña
descripción y 2 botones que darán inicio a los eventos principales del sistema.
se comunica con el modelo mediante la clase coordinador y desde esta se cargan las otras
ventanas de la aplicación.
Clase VentanaRegistro.
Permite el ingreso de información a la BD, en ella se evidencian todos los campos de la tabla
Persona y presenta un medio gráfico para las clases PersonaVo y PersonaDao, al ejecutar el
evento de registro se establece comunicación entre el coordinador y la clase Lógica donde se
encuentran todas las validaciones y casos para el ingreso de información.
Clase VentanaBuscar.
Esta clase permite realizar las operaciones de Consulta, Actualización y eliminación de la tabla
Persona, igual que la anterior representa la parte visual del modelo y se ejecutan los eventos para
la lógica de los procesos anteriores, la forma de obtener los datos y como se
le envían parámetros de consulta a la BD.
El Controlador.
Clase Principal.
1
2
3 private void iniciar() {
4 /**Se instancian las clases*/
5 miVentanaPrincipal=new VentanaPrincipal();
miVentanaRegistro=new VentanaRegistro();
6 miVentanaBuscar= new VentanaBuscar();
7 miLogica=new Logica();
8 miCoordinador= new Coordinador();
9
/**Se establecen las relaciones entre clases*/
10 miVentanaPrincipal.setCoordinador(miCoordinador);
11 miVentanaRegistro.setCoordinador(miCoordinador);
12 miVentanaBuscar.setCoordinador(miCoordinador);
miLogica.setCoordinador(miCoordinador);
13
14 /**Se establecen relaciones con la clase coordinador*/
15 miCoordinador.setMiVentanaPrincipal(miVentanaPrincipal);
16 miCoordinador.setMiVentanaRegistro(miVentanaRegistro);
miCoordinador.setMiVentanaBuscar(miVentanaBuscar);
17 miCoordinador.setMiLogica(miLogica);
18
19 miVentanaPrincipal.setVisible(true);
}
20
21
22
Clase Coordinador.
Esta clase contiene toda la lógica de relaciones en el aplicativo, es el puente entre el modelo y las
vistas.
Puede contener instancias locales tanto de clases de la vista como de clases del modelo, estas
instancias tienen sus respectivos métodos set y get permitiendo el flujo de llamados del sistema.
1
2
public Logica getMiLogica() {
3 return miLogica;
4 }
5
6 public void setMiLogica(Logica miLogica) {
7 this.miLogica = miLogica;
}
8
9 public void mostrarVentanaRegistro() {
10 miVentanaRegistro.setVisible(true);
}
11
12 public void mostrarVentanaConsulta() {
13 miVentanaBuscar.setVisible(true);
14 }
15
public void registrarPersona(PersonaVo miPersona) {
16 miLogica.validarRegistro(miPersona);
17 }
18
19