使用MyBatis Generator自動生成實體、mapper和dao層
阿新 • • 發佈:2018-12-09
本人使用:
- 整合開發環境:idea
- 專案管理工具:maven
- 資料庫:oracle
- 框架:Spring+SpringMVC+myBatis
主要步驟:
- 在pom.xml中加入外掛依賴
- 寫mbgConfiguration.xml檔案,jdbc.properties檔案
- 寫/SSM/src/main/java/main/GenMain.java main方法
- 執行main函式,重新整理
具體實現:
1,在pom.xml中加入外掛依賴
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <!-- mybatis-generator-core 反向生成java程式碼--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>
2、寫mbgConfiguration.xml檔案,jdbc.properties檔案
db.driverClassName=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL db.username=PARK_SERVICE db.password=parkservice ## 連線池資訊 # 連線池中可同時連線的最大的連線數(預設值為8,調整為20,高峰單機器在20併發左右,自己根據應用場景定) db.maxTotal=50 # 連線池最小空閒 db.minIdle=10 # 最大等待時間,當沒有可用連線時,連線池等待連線釋放的最大時間,超過該時間限制會丟擲異常, # 如果設定-1表示無>限等待(預設為無限,調整為60000ms,避免因執行緒池不夠用,而導致請求被無限制掛起) db.maxWaitMillis=60000 # 驗證連線是否可用sql db.validationQuery=SELECT 1 FROM DUAL # 對拿到的connection進行validateObject校驗 db.testOnBorrow=true db.poolPreparedStatements=true db.defaultAutoCommit=false # 對應的類檔案【entity,dao】 存放位置 park.targetproject=F:\\SSM-PARKSERVICES\\PARK-SERVICE\\src\\main\\java # 對應的mapper.xml檔案 存放位置 park.targetresources=F:\\SSM-PARKSERVICES\\PARK-SERVICE\\src\\main\\resources
<?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"> <!-- 第一種mybatis逆向生成xml配置:配置生成器 --> <generatorConfiguration> <!--引入資料庫連線配置檔案--> <properties resource="db.properties" /> <!-- context:生成一組物件的環境 id:必選,上下文id,用於在生成錯誤時提示 defaultModelType:指定生成物件的樣式 1,conditional:類似hierarchical; 2,flat:所有內容(主鍵,blob)等全部生成在一個物件中; 3,hierarchical:主鍵生成一個XXKey物件(key class),Blob等單獨生成一個物件,其他簡單屬性在一個物件中(record class) targetRuntime: 1,MyBatis3:預設的值,生成基於MyBatis3.x以上版本的內容,包括XXXBySample; 2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample; introspectedColumnImpl:類全限定名,用於擴充套件MBG --> <context id="sqlserverTables" targetRuntime="MyBatis3"> <!-- 自動識別資料庫關鍵字,預設false,如果設定為true,根據SqlReservedWords中定義的關鍵字列表; 一般保留預設值,遇到資料庫關鍵字(Java關鍵字),使用columnOverride覆蓋 --> <property name="autoDelimitKeywords" value="false"/> <!-- 生成的Java檔案的編碼 --> <property name="javaFileEncoding" value="UTF-8"/> <!-- 格式化java程式碼 --> <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/> <!-- 格式化XML程式碼 --> <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/> <!-- 生成的pojo,將implements Serializable--> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <commentGenerator> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 資料庫連結URL、使用者名稱、密碼 --> <jdbcConnection driverClass="${db.driverClassName}" connectionURL="${db.url}" userId="${db.username}" password="${db.password}"> </jdbcConnection> <!--預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer true,把JDBC DECIMAL 和 NUMERIC 型別解析為java.math.BigDecimal--> <javaTypeResolver> <property name="forceBigDecimals" value="true" /> </javaTypeResolver> <!--生成model模型,對應的包路徑,以及檔案存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java, 也可以使用“MAVEN”來自動生成,這樣生成的程式碼會在target/generatord-source目錄下--> <javaModelGenerator targetPackage="com.zrkj.entity" targetProject="${park.targetproject}"> <property name="enableSubPackages" value="true"/> <!-- 從資料庫返回的值被清理前後的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--對應的mapper.xml檔案 --> <sqlMapGenerator targetPackage="mappers" targetProject="${park.targetresources}"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 對應的Mapper介面類檔案 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zrkj.dao" targetProject="${park.targetproject}"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 列出要生成程式碼的所有表,這裡配置的是不生成Example檔案 --> <!-- tableName:資料庫中的表名, domainObjectName:取得檔案類名 --> <table tableName="INVOICE" domainObjectName="Invoice" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" > <property name="useActualColumnNames" value="false"/> </table> </context> </generatorConfiguration>
3.寫GenMain.java main方法
package com.zrkj.generator;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
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.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
/**************************************
* @author E-mail:[email protected]
* @version 建立時間:2017年6月23日 下午9:18:19
* 類說明:
* mybatis逆向工程main函式
***************************************
*/
public class GenMain {
public static void main(String[] args) {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//如果這裡出現空指標,直接寫絕對路徑即可。
String genCfg = "/mbgConfiguration.xml";
File configFile = new File(GenMain.class.getResource(genCfg).getFile());
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = null;
try {
config = cp.parseConfiguration(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = null;
try {
myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
try {
myBatisGenerator.generate(null);
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4、執行Main方法,重新整理專案,就會在上面mbgConfiguration.xml中配置的對應檔案的目錄下生成實體,mapper,dao了。