mybatis-generator生成逆向工程兩種方式
阿新 • • 發佈:2019-01-03
mybatis官方提供了一個逆向工程包,可以針對資料庫表自動生成mybatis執行所需要的Pojo、Mapper xml檔案、Mapper Interface介面檔案。
mybatis-generator有很多種用法:命令列、eclipse/IDEA、Maven外掛,其使用原理完全一樣。
無論哪種方式,首先要準備兩個元件包:mybatis-generator-core-1.X.X.jar 和MySQL-connector-Java-5.X.XX.jar (點選下載兩個元件)
命令列方式
從這個入手,因為最方便。
1、新建任意目錄(D:\A-TWM\Mybatis),把兩個元件拷入目錄。
2、新建配置檔案,命名:config.xml
補充:下載好的jar包裡面有幫助文件,開啟后里面有配置檔案的模板。
config.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 >
<!-- 資料庫驅動包位置 -->
<classPathEntry location="D:\A-TWM\Mybatis\mysql-connector-java-5.1.26-bin.jar" />
<context id="sqlGenerate" targetRuntime="MyBatis3">
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<commentGenerator>
<property name ="suppressAllComments" value="true" />
</commentGenerator>
<!-- 資料庫連結URL、使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/tangwenmingdb?characterEncoding=utf8"
userId="root" password="root">
</jdbcConnection>
<!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer;
為 true時把JDBC DECIMAL和NUMERIC型別解析為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成Pojo包名和位置 -->
<javaModelGenerator targetPackage="twm.mybatisdemo.pojo"
targetProject="D:\A-TWM\Mybatis\src">
<!-- enableSubPackages:是否讓schema作為包的字尾 -->
<property name="enableSubPackages" value="true" />
<!-- 清理前後的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成Mapper對映XML檔案位置 -->
<sqlMapGenerator targetPackage="twm.mybatisdemo.mapper"
targetProject="D:\A-TWM\Mybatis\src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成Mapper介面檔案位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="twm.mybatisdemo.mapper" targetProject="D:\A-TWM\Mybatis\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 要生成哪些表(更改tableName和domainObjectName就可以) -->
<!-- tableName:要生成的表名
domainObjectName:生成後的例項名
enableCountByExample:Count語句中加入where條件查詢,預設為true開啟
enableUpdateByExample:Update語句中加入where條件查詢,預設為true開啟
enableDeleteByExample:Delete語句中加入where條件查詢,預設為true開啟
enableSelectByExample:Select多條語句中加入where條件查詢,預設為true開啟
selectByExampleQueryId:Select單個物件語句中加入where條件查詢,預設為true開啟
-->
<table tableName="user" domainObjectName="User"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false" />
<table tableName="category" />
<table tableName="order"/>
<table tableName="product"/>
<table tableName="order_detail"/>
</context>
</generatorConfiguration>
如果table裡邊不配置property,預設將所有欄位逆向生成為類屬性。
如果有些欄位並不想生成為類屬性,可以用ignoreColumn標籤:
<ignoreColumn column="FRED" />//忽略欄位
還可以指定逆向生成時,欄位到屬性的轉換對應關係
<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />//無論欄位是什麼型別,生成的類屬性都是varchar。
3、通過cmd開啟命令視窗
執行:java -jar mybatis-generator-core-1.3.2.jar -configfile config.xml -overwrite
出現MyBatis Generator finished successfully.表示執行成功,將指定生成位置(這裡是src)的原始碼拷入工作專案中即可。
Eclipse方式
1、新建工程、將元件和將配置檔案config.xml放到對應的目錄
2、在main函式中寫程式碼執行
public static void main(String[] args) 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);
}
3、以application的方式執行就可以了