dataclassg version 2.0 es un plugin para netbeans...

26
DATACLASSG Version 2.0 Es un plugin para NetBeans que permite crear ORM Indice I.Introducción II.Restricciones III.Instalación plugin 3.1 Creación de la base de datos IV.Uso del ORM 4.1 Crear un proyecto Java Application I. Introducción DataClassG es un plugin para NetBeans que permite crear un ORM personalizado, de manera que podamos interacturar con bases de datos relaciones a través de objetos en Java. Permite trabajar con proyectos NetBeans y maven, para aplicaciones Desktop y móvil. 1

Upload: phammien

Post on 20-Sep-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

DATACLASSGVersion 2.0

Es un plugin para NetBeans que permite crear ORM Indice

● I.Introducción● II.Restricciones● III.Instalación plugin

○ 3.1 Creación de la base de datos● IV.Uso del ORM

○ 4.1 Crear un proyecto Java Application●

I. Introducción

DataClassG es un plugin para NetBeans que permite crear un ORM personalizado, de manera que podamos interacturar con bases de datos relaciones a través de objetos en Java.

Permite trabajar con proyectos NetBeans y maven, para aplicaciones Desktop y móvil.

1

Su funcionalidad es muy simple, creas un proyecto en NetBeans, agregas la base de datos al IDE, ejecutas el plugin y el estomáticamente generara las antotaciones, beans, controller, persistencia.

De manera que podamos realizar las operaciones básicas SQL con objetos y métodos en Java. Atraves del beans y la clase controller.

Si deseamos crear registros de gruposusuarios. Gruposusuarios g= new GruposUsuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario(“admin”); g.setGrupousuario(“Administrador”); if(gc.Crear(g)){

System.out.println(“Guardado”); else{

System.out.println(“No se pudo guardar “+gc.getMensaje());}

Creando un registro en la tabla usuarios.

Usuarios u = new Usuarios();UsuariosController uc = new UsuariosController();u.setUsername(“avbravo”);u.setUsuario(“Arisitides Villarreal”);u.setIdgrupousuario(“admin”);if(uc.Crear(u)){ System.out.println(“Guardado”);else{ System.out.println(“No se pudo guardar “+uc.getMensaje());}

Las relaciones entre tablas se manejan internamente. Se detectan las relaciones de las tablas y se cargan los registros en los objetos.if(uc.Listar()){ for(Usuarios u:uc.getUsuarioslist()){ System.out.println(u.getUsuario() + “ grupo: “ +u.getGruposusuarios().getGrupousuario()); } }

2

II.Restricciones Restriccion 0:

El nombre de los campos no debe ser igual al nombre de la tabla.Recomendación: No utilizar el nombre de la tabla para los nombres de campos.

Restriccion 1. Los nombre de campos índices deben llamarse igual en las tablas relacionadas.

Ejemplo: Valido

Tabla campo1 campo2

grupousuarios idgrupousuario gruposuario

usuarios username usuario idgrupousuario

3

Ejemplo:No Valido

Tabla campo1 campo2

grupousuarios idgrupousuario gruposuario

usuarios username usuario idgrupo

Restricción 2. Los nombres de campos deben estar en minúsculas Restriccion 3:

No soporta campos imagenes Restricción 4:

No soporta campos archivos. Restricción 5:

No soporta transacciones Restricción 6:

No soporta procedimientos almacenadosRestricción 6:

Bases de datos probadas: MySQL, PostGresql

III. Instalación del pluginDescargar el plugin desdehttp://plugins.netbeans.org/plugin/39424/dataclassg Iniciar NetBeans IDEEn el menu Tools-> Plugins->

4

Responder a los mensajes que solicita el IDE, y luego queda el icono en el escritorio

3.1 Creación de la base de datos. practicaTabla: gruposusuarios

columna tipo indice foreign

idgruposuario varchar(35) primary key

grupousuario varchar(80)

activo varchar(2)

5

Tabla: usuarios

columna tipo indice foreign

username varchar(35) primary key

usuario varchar(80)

idgrupousuario varchar(35) index forgeign key gruposusuarios

CREATE TABLE `practica`.`gruposusuarios` ( `idgrupousuario` varchar(35) NOT NULL, `grupousuario` varchar(80) NOT NULL, `activo` varchar(2) NOT NULL, PRIMARY KEY (`idgrupousuario`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 CREATE TABLE `practica`.`usuarios` ( `username` VARCHAR(35) NOT NULL, `usuario` VARCHAR(80) NOT NULL, `idgrupousuario` VARCHAR(35) NOT NULL, PRIMARY KEY (`username`), INDEX `grupousuarios_index`(`idgrupousuario`), CONSTRAINT `gruposusuarios_fk_constraint` FOREIGN KEY `gruposusuarios_fk_constraint` (`idgrupousuario`) REFERENCES `gruposusuarios` (`idgrupousuario`) ON DELETE RESTRICT ON UPDATE RESTRICT)ENGINE = InnoDB;

3.2 Agregar la base de datos a NetBeansEn Servicios->Drivers ->MySQL

Clic derecho en MySQL(Connector/JDriver)->Conecct Using..

En el cuadro de dialogo indicamos el nombre de la base de datos, el usuario , password y presionamos el botón Finish

6

Nos muestra la base de datos

IV. Uso de DataClassG4.1 Crear el proyecto Java Application en NetBeans o abrir un proyecto Maven.

Creamos el proyecto Practica

7

El IDE genera el esqueleto del proyecto

Seleccionamos el proyecto y en el menu File->Project Properties. Nos ubicamos en

Libraries y dar clic en Add Library....

Agregamos el driver MySQL JDBC.

8

Driver agregado

Verificamos que las fuentes en Source/Binary Format este seleccionado JDK-7. No

funciona con versiones anteriores del JDK.

9

Ahora seleccionamos el proyecto y damos clic en el icono del plugin

Se muestra el dialogo del plugin, verifcamos que muestre el proyecto y seleccionamos la conexión a la base de datos practica, y presionamos el botón Execute.

Aparece un mensaje indicando que el proceso termino, se generan los paquetes en el

proyecto.

10

Revisamos el archivo InformeGeneracion.txt en el paquete org.practica.generales,

este contiene información del proceso de generación.El paquete beans: Contiene las clases que corresponden a las tablas de la base de

datos, con las anotaciones que ofrecen información de la tabla, columnas, indices y relaciones.

El paquete controller:Contiene las clases que permiten manipular las operaciones sobre los objetos.

11

El paquete persistencia: Contiene las clases que permiten manipular las operaciones sobre las tablas de las bases de datos, contiene las operación a bajo nivel que interactúan con la base de datos. Para el usuario final las clases en este paquete no son utilizables. Solo utilizara las clases en el paquete beans y controller.

El paquete anotaciones: Contiene las clases que defienen las anotaciones para Columna, Relaciones y Table.Estas no son utilizables para los usuarios finales.

12

El paquete generales:Contiene las clases para manejo de Idiomas, Mensajeria(Contiene metodos para mostrar mensajes) , Sesion. Adicional el archivo InformesGeneracion.txt con la información del proceso de generación.

El paquete menu:Contiene la clase Menu que esta compuesta de atributos booleanos

correspondientes a las clases y a las operaciones sobre ellas.

El paquete properties: Contiene dos archivos de propiedades configuration.properties

la información de conexion a la base datos. mensajes.properties contiene mensajes para cada clase y sus opciones.as clases que permiten manipular las operaciones sobre los objetos

Nota: El usuario solo tendrá que utilizar las clases en el paquete beans, controller y la

clase Mensajeria.java. Las demás clases se usan para los procesos internos. Ahora seleccionamos el proyecto, dar click derecho y seleccionar Clean and Build

Se crea el archivo Practica.jar en el directorio dist.

13

Creamos un proyecto nuevo que llamaremos MyAplicacion

Agregar en las bibliotecas del proyecto MySQL Driver y Practica.jar

Solo necesitamos utilizar los beans para asignarle valores y controller para llamar a los

métodos.

MENSAJESMetodo:getMensaje()Acción: Devuelve el mensaje de lo ocurrido en el método.Valor de retorno: String.

14

CREARMetodo:Crear(Clase)Acción: Crea un registro en la base de datos. Internamente valida que los campos requeridos tengan valor.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); g.setGrupousuario("Administrador");

15

g.setActivo("si"); if(gc.Crear(g)){ Mensajeria.Mensaje("Se guardo el grupo de usuario"); }else{ Mensajeria.Mensaje("No se guardo causa: "+gc.getMensaje()); }

EDITAR Metodo:Editar(Clase)Acción: Edita un registro de la tabla. Internamente valida que los campos requeridos tengan valor.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); g.setGrupousuario("Administrador"); g.setActivo("no"); if(gc.Editar(g)){ Mensajeria.Mensaje("Se actualizo"); }else{ Mensajeria.Mensaje("No se actualizo: "+gc.getMensaje()); }

16

Metodo:Editar(String )Acción: Edita los registros en tabla en base a la condición que se usa como parámetro.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); String sqlupdate="activo='si' where idgrupousuario='admin'"; if(gc.Editar(sqlupdate)){ Mensajeria.Mensaje("Se actualizo"); }else{ Mensajeria.Mensaje("No se actualizo causa: "+gc.getMensaje()); } Metodo:EditarClavePrimaria(Clase_old, Clase_nueva)Acción: Edita la clave primaria de la tabla, necesita que se pasen dos objetos de la

clase.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g_new = new Gruposusuarios(); Gruposusuarios g_old= new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g_old.setIdgrupousuario("admin"); //la nueva llave primaria g_new.setIdgrupousuario("newadmin"); if(gc.EditarClavePrimaria(g_old, g_new)){ Mensajeria.Mensaje("Se actualizo"); }else{ Mensajeria.Mensaje("No se actualizo causa: "+gc.getMensaje()); }

17

ELIMINARMetodo:Eliminar(Clase)Acción: Elimina un registro en la tabla para ello se debe asignar el valor de la llave

primaria.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); if (Mensajeria.PreguntaSiNo("Desea eliminar el grupo", "Usuarios").equals("si")) { if (gc.Eliminar(g)) { Mensajeria.Mensaje("Se elimino"); } else { Mensajeria.Mensaje("No se elimino: " + gc.getMensaje()); } } Metodo:Eliminar(String sqldelete)Acción: Elimina los registros basados en la condicion where que se pasa como una

cadena.Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); if (Mensajeria.PreguntaSiNo("Desea eliminar el grupo", "Usuarios").equals("si")) { String sql = "idgrupousuario='admin' and activo='no'"; if (gc.Eliminar(sql)) { Mensajeria.Mensaje("Se eliminaron los registros"); } else { Mensajeria.Mensaje("No se elimino: " + gc.getMensaje()); } }

18

Metodo:EliminarTodos()Acción: Elimina todos los registros de la tabla. Se debe pasar solo la llave primaria de

la tabla. Valor de retorno: booleano (true = exitoso, false= no exitoso) Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); if (Mensajeria.PreguntaSiNo("Desea eliminar el grupo", "Usuarios").equals("si")) { if (gc.EliminarTodos()) { Mensajeria.Mensaje("Se eliminaron todos los registros"); } else { Mensajeria.Mensaje("No se elimino: " + gc.getMensaje()); } }

19

EXISTE REGISTRO Metodo:ExisteRegistro(Clase)Acción: Busca en la tabla por la llave primaria.Valor de retorno: booleano (true = exitoso, false= no exitoso)

Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); if (gc.ExisteRegistro(g)) { Mensajeria.Mensaje("existe"); } else { Mensajeria.Mensaje("No existe: " + gc.getMensaje()); }

CONSULTAS DE REGISTROSMetodo:Clase findByPrimaryKey(Clase clase)Acción: Busca en la tabla por la llave primaria.

20

Valor de retorno: Un objeto de la clase si lo encuentra, o null si no lo encuentra.Se asigna el valor de retorno a un objeto de la misma clase. Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); g.setIdgrupousuario("admin"); Gruposusuarios g2 = gc.findByPrimaryKey(g); if(g2 != null){ g = g2; Mensajeria.Mensaje("grupo "+ g.getGrupousuario()); } else { Mensajeria.Mensaje("No existe: " + gc.getMensaje()); } Nota.: Cuando se tienen tablas relacionadas automaticamente se devuelven los

registros de la clase relacionada. Usuarios u = new Usuarios(); UsuariosController uc = new UsuariosController(); u.setUsername("avbravo"); Usuarios u2 = uc.findByPrimaryKey(u); if(u2 != null){ u= u2;

Mensajeria.Mensaje("usuario" +u.getUsuario()+"grupo "+ u.getGruposusuarios().getGrupousuario());

} else { Mensajeria.Mensaje("No existe: " + uc.getMensaje()); }

Metodo: findByNombreCampo(Clase clase)Acción: Busca en la tabla por el campo correspondiente al método

findByNombreCampo. Se genera un metodo findBy para cada campo.Valor de retorno: boolean. (true= existen registros con ese campo, false= no existen

registros)Para obtener el resultado lo hacemos atraves del metodo getNombreCampolist();Recorremos el list atraves de un for. Gruposusuarios g = new Gruposusuarios();

21

GruposusuariosController gc = new GruposusuariosController(); g.setGrupousuario("Administrador"); if(gc.findByGrupousuario(g)){ for(Gruposusuarios g2: gc.getGruposusuarioslist()){ Mensajeria.Mensaje("grupo " + g2.getGrupousuario()); } }else{ Mensajeria.Mensaje("No existe: " + gc.getMensaje()); }

Metodo: findByMapa(Map)

Acción: Busca en la tabla por el campo que se indiquen en el Map, solo funciona con operadores and.Parametros para Consultas.1.Crear un Map para indicar los parametros2. Establece los parametros mediante el metodo put3. Llamar al metodo findByMapa4. Si no hay registros devuelve false 4.1 Si es un solo registros obtenemos el primero posición 0 Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); Map<String, String> parametros = new HashMap<String, String>(); parametros.put("grupousuario", "Administrador"); parametros.put("activo", "si"); if (gc.findByMapa(parametros)) {

22

for (Gruposusuarios g2 : gc.getGruposusuarioslist()) { Mensajeria.Mensaje("grupo " + g2.getGrupousuario()); } } else { Mensajeria.Mensaje("No existe: " + gc.getMensaje()); } Nota: El Query puede ser usado para consultas también.

Metodo:Listar()Acción: Devuelve todos los registros de la tablaValor de retorno: boolean. (true= existen registros con ese campo, false= no existen registros)Para obtener el resultado lo hacemos atraves del metodo getNombreCampolist();Recorremos el list atraves de un for. Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); if(gc.Listar()){ for(Gruposusuarios g2: gc.getGruposusuarioslist()){ Mensajeria.Mensaje("grupo " + g2.getGrupousuario()); } }else{ Mensajeria.Mensaje("No existe: " + gc.getMensaje()); }

Metodo:Query(String query)Acción: Devuelve los registros de la tabla en base a la condición indicada.

23

Valor de retorno: boolean. (true= existen registros con ese campo, false= no existen registros)Para obtener el resultado lo hacemos a través del método getNombreCampolist();Recorremos el list a través de un for.

Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); String query = "grupousuario='Administrador' order by grupousuario"; if (gc.Query(query)) { for (Gruposusuarios g2 : gc.getGruposusuarioslist()) { Mensajeria.Mensaje("grupo " + g2.getGrupousuario()); } } else { Mensajeria.Mensaje("No existe: " + gc.getMensaje()); }

CONTADOR DE REGISTROS

Metodo:Integer Contador()Acción: Devuelve el total de registros de la tabla. Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); Mensajeria.Mensaje("Numero de registros" + gc.Contador());

Metodo:Integer Contador(String sql)Acción: Devuelve el total de registros de la tabla basados en la condición que se pasa

como parametro. Gruposusuarios g = new Gruposusuarios(); GruposusuariosController gc = new GruposusuariosController(); String sqlquery = "grupousuario='Administrador'"; Mensajeria.Mensaje("Numero de registros" + gc.Contador(sqlquery));

24

FUNCIONES

Método: Func(String funcion, String campo) Acción:Ejecuta funciones sobre un campo(sum,max,min,etc).Valor de retorno: Double ,este puede ser convertido a entero mediante initValue();En este ejemplo asumimos que tenemos una tabla llamada empleado que tiene un

campo double llamado totalpagado.

EmpleadoController empleadoController = new EmpleadoController();

Double Total =

empleadoController1.Func("sum", "totalpagado");

System.out.println(" Total "+total);

//Si es un campo entero

// System.out.println(" Total "+total.intValue());

Método: Func(String funcion, String campo) Acción:Ejecuta funciones sobre un campo(sum,max,min,etc). basados en la condición

establecida como parámetro.Valor de retorno: Double ,este puede ser convertido a entero mediante initValue();En este ejemplo asumimos que tenemos una tabla llamada empleado que tiene un

campo double llamado totalpagado.

25

EmpleadoController empleadoController = new EmpleadoController(); Double Total = empleadoController1.Func("sum", "totalpagado","anulado=’no’"); System.out.println(" Total "+total); //Si es un campo entero // System.out.println(" Total "+total.intValue());

26