MybatisGenerator的使用

流體石頭發表於2019-01-19

在寫程式碼過程中,常常要寫一些簡單的CURD操作,為了能夠把時間用在業務邏輯上,看了Mybatis Generator生成工具,根據官網的文件,改成適合自己使用的生成器。

mybatis generator的配置檔案 如下:

<?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>
    <!--讀取配置檔案-->
    <properties resource="generator.properties" />

    <context id="MySQLContext" targetRuntime="MyBatis3">
        <!--設定檔案編碼-->
        <property name="javaFileEncoding" value="UTF-8"/>

        <!--配置去掉所有生成的註釋-->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--設定資料庫連線驅動-->
        <jdbcConnection driverClass="${jdbc.driverClass}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}">
        </jdbcConnection>

        <!--當欄位型別是 DECIMAL或者 NUMERIC時,是否強制轉換為BigDecimal,否的話會自動根據規模的大小選擇合適的型別  -->
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="me.xueyao.model" targetProject=".srcmainjava">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 生成對映檔案的包名和位置-->
        <sqlMapGenerator targetPackage="me.xueyao.mapper"  targetProject=".srcmain
esources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="me.xueyao.mapper"
                             targetProject=".srcmainjava">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 要生成的表 tableName是資料庫中的表名或檢視名 domainObjectName是實體類名,需要根據自己的需求修改-->
        <table  tableName="candidate" domainObjectName="Candidate" enableCountByExample="false"
            enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false">
            <generatedKey column="id" sqlStatement="MySql" identity="true" />
        </table>

    </context>
</generatorConfiguration>

mybatis generator的執行檔案 如下:

package me.xueyao;

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.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description: Mybatis Generator 生成器
 * @Author: Simon.Xue
 * @Date: 2019/1/18 13:44
 */
public class Generator {

    public static void main(String[] args) throws Exception {
        //警告資訊集合
        List<String> warnings = new ArrayList<String>();
        //讀取生成器的配置檔案
        InputStream resourceAsStream = Generator.class.getResourceAsStream("/mybatis-generator.xml");
        //建立配置解析器
        ConfigurationParser configurationParser = new ConfigurationParser(warnings);
        //解析配置檔案
        Configuration configuration = configurationParser.parseConfiguration(resourceAsStream);
        resourceAsStream.close();
        //true時,如果有相同的檔案則覆蓋檔案
        DefaultShellCallback defaultShellCallback = new DefaultShellCallback(true);
        //建立生成器物件
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(configuration, defaultShellCallback, warnings);
        //執行生成程式碼
        myBatisGenerator.generate(null);
        //輸出警告資訊
        for (String warning : warnings) {
            System.out.println(warning);
        }
    }
}

原始碼託管在GitHub