Ingeniería inversa de Mybatis (genera automáticamente el código mybatis mapper.java, mapper.xml, clase po para una sola tabla en la base de datos) -day05

Ingeniería inversa Mybatis

1. Introducción

  • En pocas palabras, es generar automáticamente código java a través de una sola tabla en la base de datos .

  • Mybatis ofrece oficialmente ingeniería inversa, que
    puede generar automáticamente código mybatis para una sola tabla (mapper.java \ mapper.xml \ po class)

  • En el desarrollo empresarial, la ingeniería inversa es una herramienta muy común.

  • La ingeniería inversa solo proporciona algunas operaciones simples de adición, eliminación, modificación y verificación. Algunos modelos complejos tienen modelos, y hay colecciones y otras operaciones en el modelo que deben configurarse por sí mismos.

2. Descargar ingeniería inversa

3. Cómo utilizar

  1. Cree un proyecto Java simple;
  2. Importe el paquete jar relevante y cree el archivo de configuración del generador;
  3. Utilice clases de Java para realizar ingeniería inversa;
  4. Copie el código generado al proyecto;
  5. Utilice el código generado por ingeniería inversa en un proyecto formal.

Paso 1: crea un proyecto java simple

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Paso 2: Importe el paquete jar y cree el archivo de configuración del generador

  • Importar paquete de ingeniería inversa
    Inserte la descripción de la imagen aquí

  • Importe el paquete del controlador de la base de datos mysql (según la versión de jdk utilizada, jdk1.7 utiliza la versión 5)
    Inserte la descripción de la imagen aquí

  • Cree una carpeta lib, cópiela directamente, agregue como biblioteca
    Inserte la descripción de la imagen aquí

  • Okay
    Inserte la descripción de la imagen aquí

  1. Primero cree un generatorConfig.xml (archivo de configuración del generador) en srcInserte la descripción de la imagen aquí
  2. Luego, abra index.html en docs en el archivo descargado (vea la introducción, función y uso de la ingeniería inversa)
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  3. Abra el inicio rápido a la izquierda (proporciona pasos de uso y archivo de configuración xml)
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  4. Haga clic en la referencia de configuración XML en el medio, primero copie el contenido dentro del archivo de configuración en el proyecto y luego modifíquelo
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
      <property name="useActualColumnNames" value="true"/>
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      <columnOverride column="DATE_FIELD" property="startDate" />
      <ignoreColumn column="FRED" />
      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
    </table>

  </context>
</generatorConfiguration>
  1. Modificar el archivo de configuración
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <context id="mysqlTables" targetRuntime="MyBatis3">
        <!--1.数据库配置(8版本以上的数据库驱动jar包记得加上cj)
        本地默认数据库localhost:3306可省略为 ///,服务器(或linux)上配置记得换成 //ip:端口号/
        这里是5版本的jar连接8版本的数据库,需要加上编码格式?useUnicode=true&amp;characterEncoding=utf8
        -->
        
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql:///mybatis_day01?useUnicode=true&amp;characterEncoding=utf8"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!--2.java类型解析:默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
			和 NUMERIC 类型解析为java.math.BigDecimal
        -->
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--3.配置模型生成的位置
        .\src 表示生成到当前目录的src下
        --> <!-- enableSubPackages:是否让schema作为包的后缀 -->
        <javaModelGenerator targetPackage="com.it.model" targetProject=".\src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--4.mybatis的映射文件.xml生成的位置-->
        <sqlMapGenerator targetPackage="com.it.mapper"  targetProject=".\src">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!--5.mybatis的mapper接口生成的位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.it.mapper"  targetProject=".\src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!--6.配置要生成的表的模型--><!--这里的一些详细配置就不配置了,直接配置表-->
        <!--domainObjectName 生成的对应类名-->
        <table tableName="items"></table>
        <table tableName="orderdetail" domainObjectName="OrderDetail"></table>
        <table tableName="orders"></table>
        <table tableName="user"></table>
    </context>
</generatorConfiguration>
  • La configuración de la tabla es consistente con el nombre de la tabla de la base de datos.
    Inserte la descripción de la imagen aquí

Paso 3: use clases de Java para realizar ingeniería inversa

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName
 * @Author shuyy
 * @Date 2020/10/5
 **/
public class Generator {
    
    
    public static void main(String[] args)  throws Exception{
    
    
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        myBatisGenerator.generate(null);
    }
}
  • Ejecutado y generado con éxito (Nota: la ingeniería inversa solo puede generar operaciones simples como agregar, eliminar, modificar y verificar CRUD. Hay modelos en modelos complejos y las colecciones en modelos deben configurarse por sí mismas)
    Inserte la descripción de la imagen aquí

Paso 4: copia el código generado a otros proyectos

  • Simplemente copie al ssm anterior y utilícelo brevemente (tenga en cuenta que al copiar, copie el modelo en el primero y luego copie el mapeador; de lo contrario, se informarán muchos errores debido al problema de importación del paquete y muchos paquetes deben volver a importarse)
    Inserte la descripción de la imagen aquí

Paso 5: use el código generado por ingeniería inversa en un proyecto formal (prueba)

  • Si hay un error en ejecución y no se puede encontrar el paquete, puede cerrar el proyecto y volver a escribirlo y abrirlo.

  • Aquí usamos la tabla de elementos para demostrar, recuerde proporcionar toString para los elementos
    Inserte la descripción de la imagen aquí

  • La ingeniería inversa también proporciona un ejemplo para encapsular las condiciones de consulta
    Inserte la descripción de la imagen aquí

	@Test
    public void test2(){
    
    
        //1.加载spring配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        //2.获取dao的bean
        ItemsMapper itemsMapper = (ItemsMapper) context.getBean("itemsMapper");

        //3.调用方法
        Items items = itemsMapper.selectByPrimaryKey(1);
        System.out.println(items);

        System.out.println("-----------------------");

        //4.还可以封装查询条件(逆向工程还提供了Example用于封装查询条件)
        ItemsExample example = new ItemsExample();
        ItemsExample.Criteria criteria = example.createCriteria();
        criteria.andNameLike("%笔记本%");
        List<Items> list = itemsMapper.selectByExample(example);
        for (Items items1 : list) {
    
    
            System.out.println(items1);
        }
    }

Supongo que te gusta

Origin blog.csdn.net/qq_43414199/article/details/108927568
Recomendado
Clasificación