MyBatis Generator(逆向工程)的配置

什麼叫Generator(逆向工程)

正向工程————先寫pojo、mapper.java、mapper.xml再寫數據庫表單;
相反,逆向工程直接根據表單生成上述文件,程序員不用寫那麼多sql語句,而是在已有xml文件基礎上修改即可。

使用Generator的步驟

新建一個包,設置好包目錄

這裏寫圖片描述
工具包lib必須設置在項目的根目錄下,而不是像以前放在WEB-INF中

導包

這裏寫圖片描述

配置generatorConfig.xml

  • 配置寫的非常詳細,可以逐條看(放進ide裏邊看清晰一些)
<?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"
                        userId="root"
                        password="12345">
        </jdbcConnection>
        <!--&lt;!&ndash;
            for oracle
           &ndash;&gt;
        <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
            userId="yycg"
            password="yycg">
        </jdbcConnection>-->

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

        <!-- javaModelGenerator javaBean生成的配置信息
             targetProject:生成PO類的位置
             targetPackage:生成PO類的類名-->
        <javaModelGenerator targetPackage="com.bamzhy.bean"
                            targetProject=".\src">
            <!-- enableSubPackages:是否允許子包,是否讓schema作爲包的後綴
                 即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="true" />
            <!-- 從數據庫返回的值是否清理前後的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>


        <!-- sqlMapGenerator Mapper映射文件的配置信息
            targetProject:mapper映射文件生成的位置
            targetPackage:生成mapper映射文件放在哪個包下-->
        <sqlMapGenerator targetPackage="com.bamzhy.xml"
                         targetProject=".\src">
            <!-- enableSubPackages:是否讓schema作爲包的後綴 -->
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!--
           javaClientGenerator 生成 Model對象(JavaBean)和 mapper XML配置文件 對應的Dao代碼
           targetProject:mapper接口生成的位置
           targetPackage:生成mapper接口放在哪個包下
        -->

        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.bamzhy.dao"
                             targetProject=".\src">
            <!-- enableSubPackages:是否讓schema作爲包的後綴 -->
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator><!---->
        <!-- 指定數據庫表 -->

            <!-- 指定所有數據庫表 -->

            <table tableName="%"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   enableInsert="false"
                   enableDeleteByPrimaryKey="true"
                   enableSelectByPrimaryKey="true"
                   selectByExampleQueryId="false" ></table>

               <!-- 指定數據庫表,要生成哪些表,就寫哪些表,要和數據庫中對應,不能寫錯! -->
               <!--<table  tableName="student"-->
                       <!--enableCountByExample="true"-->
                       <!--enableUpdateByExample="false"-->
                   <!--&gt;</table>-->

        <!--      <table schema="" tableName="orders"></table>
             <table schema="" tableName="items"></table>
             <table schema="" tableName="orderdetail"></table>
      -->
               <!-- 有些表的字段需要指定java類型
                <table schema="" tableName="">
                   <columnOverride column="" javaType="" />
               </table> -->
    </context>
</generatorConfiguration>

(該文件放置在項目根目錄下)

寫調用Generator的代碼:

package com.bamzhy.test;

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 GeneratorTest {

    public void generator() throws Exception{
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指向逆向工程配置文件
        File configFile = new File("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);
    }

    public static void main(String[] args) throws Exception {
        try {
            GeneratorTest generatorSqlmap = new GeneratorTest();
            generatorSqlmap.generator();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

執行代碼,查看結果

這裏寫圖片描述 沒有問題,數據庫中有的表都建好了對應的文件

針對Generator生成的Mapper.java 等文件進行測試,看是否有效

這裏寫圖片描述

發佈了85 篇原創文章 · 獲贊 18 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章