Sobre el generador mybatis
El generador MyBatis (MBG) es un generador de código mybatis mybatis e ibatis. Puede generar código para varias versiones de MyBatis y código después de Ibatis 2.2.0. Puede introspectar las tablas (o tablas) de la base de datos y luego generar el objeto subyacente que se puede usar para acceder a las tablas (múltiples) de las tablas. De esta manera, no se requieren objetos y archivos de configuración al interactuar con las tablas de la base de datos. MBG resuelve algunas operaciones simples de Crud (Insertar, consultar, actualizar, eliminar) que tienen el mayor impacto en las operaciones de la base de datos. Todavía necesita SQL y objetos escritos a mano en la consulta de la Federación y los procedimientos almacenados.
Generador de mybatis generará:
Las estructuras de la mesa de juego de Java Pojos pueden incluir:
Habrá una relación de herencia adecuada entre estas clases. Tenga en cuenta que el generador se puede configurar para generar jerarquías de diferentes tipos de POjos. Por ejemplo, si prefiere, puede elegir generar un objeto de entidad separado para cada tabla.
MyBatis/Ibatis Compatible con archivos XML de mapeo SQL. MBG genera SQL en configuración para operaciones CRUD simples para cada tabla. Las declaraciones SQL generadas incluyen:
Dependiendo de la estructura de la tabla, las declaraciones generadas variarán (por ejemplo, si no hay una clave primaria en la tabla, entonces MBG no generará la actualización por método de clave principal).
La clase de cliente Java usará el objeto anterior adecuadamente y es opcional al generar la clase de cliente Java. MBG generará la siguiente clase de cliente para MyBatis 3.x:
Una clase de interfaz mapper que se puede usar con mybatis 3.x
MBG generará la siguiente clase de cliente para Ibatis 2.x:
Clase DAO que cumple con Spring Framework.
Use solo el DAO de la API de mapeo Ibatis SQL. Este DAO se puede generar de las siguientes dos maneras: proporcionar SQLMapClient a través de métodos de construcción o inyección de setter.
DAO que cumple con el marco Ibatis DAO (una parte opcional de Ibatis, que está desactualizada, le recomendamos que use el marco de primavera).
El generador MyBatis puede funcionar bien en un entorno de desarrollo iterativo y actuar como una tarea de hormiga o complementar el complemento en un entorno de construcción continuo. Las siguientes cosas importantes para recordar al ejecutar MBG:
MBG fusionará automáticamente XML que ya existe y se duplica con el archivo recién generado. MBG no sobrescribe las modificaciones que realizó al XML que ha generado. Puede ejecutarlo una y otra vez sin preocuparse por perder sus cambios personalizados. MBG reemplazará todos los elementos XML generados en ejecuciones anteriores.
MBG no fusiona archivos Java, puede sobrescribir los archivos existentes o guardar archivos recién generados a un nombre único diferente. Puede fusionar estos cambios manualmente. Cuando usa el complemento Eclipse, MBG puede fusionar automáticamente los archivos Java.
Uso básico
MBG se basa principalmente en un archivo de configuración XML. Primero, podemos recrear un nuevo proyecto llamado MyBatisGenerator, crear tres nuevos paquetes llamados Config, David.test y David.mbg. El paquete de configuración almacena principalmente los archivos de configuración necesarios en MyBatis real. Puede copiar el mybatis_demo_config.xml en el proyecto en los capítulos anteriores y ponerlo en este directorio, etc. para los programas de prueba. Como su nombre lo indica, David.test es almacenar los siguientes métodos y programas de prueba comúnmente utilizados. También puede usar la clase de herramientas MyBatisUtils en los capítulos anteriores y crear la función principal correspondiente para fines de prueba. Y el último David.mbg es el XML que vamos a configurar hoy y el MBG genera un archivo de configuración.
Como se muestra en la figura, hemos creado un nuevo archivo de configuración llamado mbg_configuration.xml a continuación. Los detalles son los siguientes:
<? xml versión = "1.0" encoding = "utf-8"?> <! DOCTYPE GeneratorConfiguration public "-// mybatis.org//dtd Configuración del generador de MyBatis 1.0 // en" "http://mybatis.org/dtd/mybatis-Generator-config_1_0.dtdd" <200 <classpathEntry ubicación = "./ lib /mysql-confonnector-java-5.1.26-bin.jar" /> <context id = "myBatisDemoFormysql" targineRime = "myBatis3"> <!-Control Comments-> <CommentGenerator> <!-si elimina todos los archivos de comentarios generados automáticamente-> <name de propiedad = "SupressallCommentos" Si debe eliminar las marcas de tiempo de todos los archivos generados automáticamente, predeterminado a falso-> <propiedad name = "supressDate" value = "true" /> < /commentGenerator> <!-Control de la base de datos-> <jdbcconnection driverClass = "com.mysql.jdbc.driver" ConnectionUrl = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? caracterSencoding = utf8" userId = "root" contraseña = "david0110"/> <javatypersolver> <!-convertir los tipos decimales y de número en jdbc en tipos intergentes-> <spertest name = "forceCimals" < /javatyperesolver> <!-Modelo correspondiente a la tabla de la base de datos-> <javaModelGenerator TargetPackage = "David.model" TargetProject = "Src"> <Property Name = "ActsubPackages" Valor = "True" /> <Property Name = "TrimStrings" Value = "True" /> < /javaModelGenerator> <!-CONTROLLO DEL MODEMAMPER THE MODEMAPERS AL MODEMPER <sqlmapGenerator TargetPackage = "David.mappers" TargetProject = "Src"> <Property Name = "enableSubPackage" valor = "true" /> < /sqlmapGenerator> <!-Controle la interfaz mapper-> <javaclientGenerator TargetPackage = "David.inter" type = "xmlmapper" TargetProject = "srMc" sterter sterge "srterpetter" sterterpetterputoly "shoterpet. name = "habilsubpackages" value = "true" /> <propiedad name = "métodnamecalculator" value = "extended" /> < /javaclientGenerator> <!-esquema para su base de datos, Tablename indica que el dominio de domingo corresponde a su nombre de clase Javabean, si el ejemplo correspondiente está generado-> <Tabla Schema = "mybatis_dBeB" Visitor "" "Visitor" "Visitor" ". domainObjectName = "Visitor" EnableCountByExample = "false" EntableUpdateByExample = "false" habilitado <ignorecolumn column = "status" delimitedColumnName = "false"/> </table> </textis> </GeneratorConfiguration>
Puedes notar que son principalmente estos nodos
<ClassPathEntry> => La ubicación donde se almacena el paquete de controlador JDBC se puede usar para usar rutas relativas o rutas absolutas. En este ejemplo, se usa la ruta relativa.
<textition> => Cumplió con la configuración de todas las tablas en una base de datos, puede haber múltiples contextos, una configuración mysql y un oráculo de configuración.
Los principales bajo el nodo <contexto> son:
<CommentGenerator> => Nodos de generador de comentarios, las 2 subplas en este ejemplo representan
supressallcomments => si debe eliminar todos los archivos de comentarios generados automáticamente
supressDate => si debe eliminar las marcas de tiempo de todos los archivos generados automáticamente, predeterminado a False
<jdbcconnection> => Información de configuración de la conexión de la base de datos
<JavatyPeresolver> => Convertir tipos de decimal y número en JDBC en java.math.BigDeciaml Representación de formularios
<JavaModelGenerator> => Configure su clase de entidad POJO, TargetPackage = "David.Model", correspondiente a su registro, puede nombrarlo de acuerdo con el negocio real, TargetProject = "SRC". En el entorno Eclipse, la ruta al proyecto y la carpeta fuente generalmente se conoce como el directorio SRC. Su paquete se creará recientemente en este directorio. Si no es el entorno Eclipse, el valor aquí debe ser una ruta del sistema de archivos real. Si la ruta especificada no existe, se informará un error, porque MBG no creará la carpeta correspondiente por sí misma
<SqlMapGenerator> => Configure para generar la entidad correspondiente mapper.xml. Para mapper3.x, necesitamos escribir = "xmlmapper"
<JavaclientGenerator> => Configurar genera la clase de interfaz correspondiente, correspondiente a una serie de declaraciones SQL del método Crud en mapper.xml
<Tably> => Configure la base de datos correspondiente, que indica que el nombre de la clase de dominio (es decir, el nombre de la clase de entidad) se desea generar. En este ejemplo, cerré toda la información de generación de ejemplo innecesaria
Toda la información anterior se puede verificar en el sitio web oficial para los documentos correspondientes, o descargar en mi archivo, con las instrucciones de configuración correspondientes y los ejemplos de aplicaciones relacionadas. Descargar el documento
Después de configurar la información anterior, ¿cuál es el último paso? Vamos a ejecutar este archivo de script. Hay 4 maneras en la descripción oficial. El primero es a través del método de línea de comandos, el segundo y el tercero se generan a través de herramientas como Ant o Maven. El último se genera a través del código Java. Utilizamos el método de generar a través de Java Barley. El método para agregar un script generado a la clase Demorun es el siguiente:
Private static void generatembgConfiguration () { /** myBatis viene con la herramienta Generator para generar la cosa correspondiente* / list <string> advertencias = new ArrayList <String> (); sobrescribir booleano = verdadero; Archivo confile = nuevo archivo ("./ src/david/mbg/mbg_configuration.xml"); ConfigurationParser CP = New ConfigurationParser (advertencias); Configuración config = null; prueba {config = cp.parseconfiguration (configFile); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (XMLParSerException e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } DefaultshellCallback llamado Callback = new DefaultShellCallback (sobrescribir); Pruebe {myBatisGenerator myBatisGenerator = new MyBatisGenerator (configuración, devolución de llamada, advertencias); myBatisGenerator.Generate (nulo); } Catch (InvalidConfigurationException e) {// TODO BLOQUE DE CABTA AUTO GENERADA E.PRINTSTACKTRACE (); } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (InterruptedException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } System.out.println ("La configuración de MyBatis se generó correctamente!"); } Después de ejecutar, actualice el proyecto, encontrará que lo siguiente genera mágicamente la configuración principal para usted. La sección de cuadro rojo de la figura a continuación:
Finalmente, usemos los resultados generados automáticamente. Podemos referirnos a los primeros seis capítulos para agregar el método de prueba CRUD correspondiente a Demorun de la siguiente manera:
/** Información del visitante de consulta*/ public static void testGenerateAdd () {sqlsession session = mybatisutils.getSqlSession (); Visitormapper voperation = session.getMapper (visitormapper.class); Visitante visitante = nuevo visitante (); visiter.setVisitor_name ("hello2"); visitante.setemail ("[email protected]"); visitante.setCreateTime (nueva fecha ()); int count = voperation.insert (visitante); session.commit (); Mybatisutils.clossession (sesión); Mybatisutils.showMessages (crud_enum.add, cuenta); } /** Información del visitante de consulta* / public static void testGenerateQuery (int id) {sqlsession session = mybatisutils.getSqlSession (); Visitormapper voperation = session.getMapper (visitormapper.class); Visitante visitante = voperation.selectbyPrimaryKey (id); Mybatisutils.clossession (sesión); Mybatisutils.showMessages (crud_enum.query, 1); System.out.println (visitante); } public static void testGeneratedElete (int id) {sqlsession session = mybatisutils.getSqlSession (); Visitormapper voperation = session.getMapper (visitormapper.class); int count = voperation.deleteByPrimaryKey (id); session.commit (); Mybatisutils.clossession (sesión); Mybatisutils.showMessages (crud_enum.delete, cuenta); } public static void testGenerateUpdate (int id) {sqlsession session = mybatisutilss.getSqlSession (); Visitormapper voperation = session.getMapper (visitormapper.class); Visitante visitante = voperation.selectbyPrimaryKey (id); System.out.println (visitante); Name de cadena = visiter.getVisitor_name (); if (name.contains ("update")) {Visitor.setVisitor_Name (name.substring (0, name.indexof ("update"))); } else {visiter.setVisitor_name (nombre + "actualización"); } int count = voperation.updateByPrimaryKey (visitante); session.commit (); Mybatisutils.clossession (sesión); Mybatisutils.showMessages (crud_enum.update, cuenta); System.out.println (visitante); } Ejecutar el programa de prueba y el resultado es
¿Sientes que usar esto te ha ayudado a mejorar mucho tu eficiencia y no tienes que preocuparte por configuraciones engorrosas? Al menos no tiene que hacer pasos repetitivos e innecesarios. Deje que estos se dejen a las herramientas para hacer^0^. Por supuesto, en uso real, es posible que necesitemos modificar la información de clase correspondiente y los nombres de información de interfaz después de la generación. Por supuesto, estas cargas de trabajo no son demasiado. Espero que estos contenidos sean útiles para los estudiantes que necesitan configurarlos hoy.