MyBatis: Guia de Configuração da Engenharia Reversa

Ao integrar o Spring Boot com MyBatis e MySQL, utilizei o gerador de código do MyBatis para automatizar a criação de entidades e mappers. Este guia documenta o processo de implementação.

Dependências Maven Necessárias


</div>O pacote org.mybatis.generatro contém as ferramentas para geração automática de código, compatível com a versão 1.3.5 do generator e 5.1.44 do conector MySQL.

### Arquivo de Configuração generatorConfig.xml

Crie o arquivo generatorConfig.xml no diretório resources com o seguinte conteúdo:

<div>```

<?xml version="1.0" encoding="UTF-8" ?>

<generatorConfiguration>
    <!-- Carregamento de propriedades -->
    <properties resource="application.properties"/>

    <!-- Contexto para cada banco de dados -->
    <context id="MysqlContext">
        <!-- Configuração de comentários -->
        <commentGenerator>
            <property name="suppressAllComments" value="false"/><!-- Manter comentários -->
            <property name="suppressDate" value="true" /> <!-- Remover timestamps dos comentários-->
        </commentGenerator>

        <!-- Configuração JDBC -->
        <jdbcConnection driverClass="${spring.datasource.driver-class-name}"
                        connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}"
                        password="${spring.datasource.password}" />

        <!-- Resolvedor de tipos Java -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/><!-- Conversão automática para tipos numéricos -->
        </javaTypeResolver>

        <!-- Geração de Modelos -->
        <javaModelGenerator targetPackage="com.boot.model"
                            targetProject="src\main\java" >
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/><!-- Remover espaços em strings -->
        </javaModelGenerator>

        <!-- Geração de Mappers XML -->
        <sqlMapGenerator targetPackage="com.boot.dao.mapper"
                         targetProject="src\main\java" >
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- Geração de Interfaces DAO -->
        <javaClientGenerator targetPackage="com.boot.dao.mapper"
                             targetProject="src\main\java" type="XMLMAPPER" >
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- Configuração da tabela -->
        <table schema="test" tableName="user"
               domainObjectName="UserDataBase" enableCountByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               enableUpdateByExample="false">
            <!-- Ignorar coluna específica -->
            <!-- <ignoreColumn column="FRED" /> -->
            <!-- Sobrescrever tipo de coluna -->
            <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> -->
        </table>

    </context>
</generatorConfiguration>

Arquivo application.properties

server.port=8082

spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false spring.datasource.username=root spring.datasource.password=******


</div>### Classe Geradora de Código

Crie uma classe Java para executar o processo de geração:

<div>```

package com.boot;

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;

public class CodeGenerator {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator generator = new MyBatisGenerator(config, callback, warnings);
        generator.generate(null);
    }
}

Problemas Comuns e Soluções

1. Erro de Conexão com o Banco de Dados

For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.


</div>**Solução:** Inclua o parâmetro SSL na URL de conexão:

<div>```

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false

Verifique:

  • Os atributos targetPackage e targetProject nas tags javaModelGenerator, sqlMapGenerator e javaClientGenerator
  • O caminho do arquivo de configuração na classe geradora

Método 2: Utilizando MyBatis-Plus

Dependências Maven


</div>### Classe Geradroa com MyBatis-Plus

<div>```

package utils;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * Gerador de código para entidades de banco de dados - MySQL
 */
public class DatabaseCodeGenerator {

    public static void main(String[] args) {
        AutoGenerator generator = new AutoGenerator();
        
        // Configurações globais
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setAuthor("devTeam");
        globalConfig.setOutputDir("E://output"); 
        globalConfig.setFileOverride(true);
        globalConfig.setActiveRecord(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);

        globalConfig.setMapperName("%sDao");
        globalConfig.setXmlName("%sDao");
        globalConfig.setServiceName("%sService");

        generator.setGlobalConfig(globalConfig);

        // Configuração da fonte de dados
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.ORACLE);
        dataSourceConfig.setDriverName("com.oscar.Driver");
        dataSourceConfig.setUsername("sysdba");
        dataSourceConfig.setPassword("szoscar55");
        dataSourceConfig.setUrl("jdbc:oscar://5.9.111.14:2003/OSRDB");
        generator.setDataSource(dataSourceConfig);

        // Estratégia de geração
        StrategyConfig strategy = new StrategyConfig();
        strategy.setEntityTableFieldAnnotationEnable(true);
        String[] tableNames = {"SCHEMA_STAGE_SETTING_EXECUTE"};
        strategy.setInclude(tableNames);
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setRestControllerStyle(true);
        generator.setStrategy(strategy);
        
        // Configuração de pacotes
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.tianzhi.req.dmd");
        packageConfig.setEntity("entity.dto");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setController("controller");
        packageConfig.setXml("mapper");
        generator.setPackageInfo(packageConfig);
        
        generator.execute();
    }
}

Tags: MyBatis engenharia-reversa java maven MySQL

Publicado em 6-30 18:21