MyBatis逆向工程

做用:能夠針對數據庫中的表單自動生成MyBatis執行所須要的代碼(包括Java實體類、Mapper映射配置及Mapper代理接口)。
適應場景:更適用於大型工程的開發。java

逆向工程配置

在實際開發中,常常須要單首創建一個逆向工程,而後將生成的代碼複製到真正的Web工程中,防止直接在原工程中生成的文件覆蓋掉直接開發的同名文件。mysql

建立的工程的完整目錄:sql

image.png

編寫generatorConfig.xml的配置:數據庫

<?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="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=utf-8" userId="root"
                        password="123456">
        </jdbcConnection>

        <!--默認false,把JDBC DECIMAL和 NUMERIC類型解析爲Integer,
                       爲 true時把JDBC DECIMAL和NUMERIC類型解析爲java.math.BigDecimal-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成PO類的位置 -->
        <javaModelGenerator targetPackage="cn.com.sm.po"
                            targetProject=".\src\main\java"><!--.\ 表示項目文件所在目錄之下的目錄。-->
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
            <!-- 從數據庫返回的值被清理先後的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="cn.com.sm.mapper"
                         targetProject=".\src\main\java">
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="cn.com.sm.mapper"
                             targetProject=".\src\main\java">
            <!-- enableSubPackages:是否讓schema做爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定數據庫表 -->
        <table tableName="user"></table>
    </context>
</generatorConfiguration>

逆向數據文件生成類

編寫完配置文件以後,就須要加載該配置文件,編寫GeneratorSqlMap類:api

package cn.com.generator.main;

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

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

public class GeneratorSqlMap {
    public void generator() throws Exception{
        //warnings爲用於放置生成過程當中警告信息的集合對象
        List<String> warnings = new ArrayList<String>();
        //ָ指定是否覆蓋重名文件
        boolean overwrite = true;
        //配置解析類
        //利用類裝載器,定位到的是編譯事後classes文件所在同級目錄下
            File configFile =
                    new File(this.getClass().getClassLoader().getResource("generatorConfig.xml").getPath());
// 或用.\表示項目文件所在目錄 
//      File configFile =
//                new File(".\\src" +
//                        "\\main" +
//                        "\\resources\\generatorConfig.xml");
        //配置解析類
        ConfigurationParser cp = new ConfigurationParser(warnings);
        //配置解析類解析配置文件並生成Configuration配置對象
        Configuration config = cp.parseConfiguration(configFile);
        //DefaultShellCallback負責如何處理重複文件  
        ShellCallback callback = new DefaultShellCallback(overwrite);
        //逆向工程對象
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        //ִ執行逆向文件生成操做
        myBatisGenerator.generate(null);
    }
    
    //執行逆向方法
    public static void main(String[] args) throws Exception {
        GeneratorSqlMap generatorSqlmap = new GeneratorSqlMap();
        generatorSqlmap.generator();
    }
}

運行該main方法結果,生成了新的文件:mybatis

image.png`app

相關文章
相關標籤/搜索