1. 程式人生 > >MyBatis逆向工程——Java程式碼自動生成

MyBatis逆向工程——Java程式碼自動生成

關於程式碼自動生成,網上呢有很多工具,也有不同的方法,MyBatis是我接觸到的第一款程式碼自動生成器,比較簡單,程式碼量也比較少,也比較好理解,好了廢話不多說,下面就給大家說一下實現方法及程式碼解釋:

我們新建一個普通的Java專案,這裡我使用的工具是idea,是一款很強大的程式碼編寫工具。

首先是要實現程式碼自動生成所需要的jar包

其次編寫一個Java類

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

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

public class GeneratorSqlmap {

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 {
        GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
        generatorSqlmap.generator();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

還有一個配置檔案

<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

    <!-- targetProject:生成POJO類的位置 -->
    <javaModelGenerator targetPackage="cn.lht.pojo"
                        targetProject=".\src">
        <!-- enableSubPackages:是否讓schema作為包的字尾 -->
        <property name="enableSubPackages" value="false" />
        <!-- 從資料庫返回的值被清理前後的空格 -->
        <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <!-- targetProject:mapper對映檔案生成的位置 -->
    <sqlMapGenerator targetPackage="cn.lht.mapper"
                     targetProject=".\src">
        <!-- enableSubPackages:是否讓schema作為包的字尾 -->
        <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>
    <!-- targetPackage:mapper介面生成的位置 -->
    <javaClientGenerator type="XMLMAPPER"
                         targetPackage="cn.lht.mapper"
                         targetProject=".\src">
        <!-- enableSubPackages:是否讓schema作為包的字尾 -->
        <property name="enableSubPackages" value="false" />
    </javaClientGenerator>

    <!-- 指定資料庫表 -->
    <table schema="" tableName="tb_content"></table>
    <table schema="" tableName="tb_content_category"></table>
    <table schema="" tableName="tb_item"></table>
    <table schema="" tableName="tb_item_cat"></table>
    <table schema="" tableName="tb_item_desc"></table>
    <table schema="" tableName="tb_item_param"></table>
    <table schema="" tableName="tb_item_param_item"></table>
    <table schema="" tableName="tb_order"></table>
    <table schema="" tableName="tb_order_item"></table>
    <table schema="" tableName="tb_order_shipping"></table>
    <table schema="" tableName="tb_user"></table>

</context>

注意這個配置檔案跟src目錄是同級的

具體的程式碼註釋我都在程式碼裡邊做了解釋

然後執行就可以了

注意:如果你已經執行過一次,但是生成的程式碼你需要有所改動需要再次生成的話,你必須得把之前已經執行所生成的所有程式碼以及包結構都刪除掉,否則就會出錯。

如有意見或者更好的自動生成程式碼的方法,歡迎評論。