MyBatis逆向工程生成程式碼(附原始碼)
阿新 • • 發佈:2018-12-21
什麼是逆向工程
MyBatis逆向工程可以方便的從資料庫中將表自動對映到JAVA POJO類,並同時生成Mapper.xml和Mapper介面,方便實用。 MyBatis的一個主要的特點就是需要程式設計師自己編寫sql,那麼如果表太多的話,難免會很麻煩,所以mybatis官方提供了一個逆向工程,可以針對單表自動生成mybatis執行所需要的程式碼(包括mapper.xml、mapper.java、po…)。一般在開發中,常用的逆向工程方式是通過資料庫的表生成程式碼。
jar包
需要使用逆向工程jar: mybatis-generator-core-1.3.2.jar mybatis 的jar:mybatis-3.4.5.jar 資料庫驅動jar:mysql-connector-java-5.1.7-bin.jar
案例
1)新建java project 為mybatisGenerator
使用逆向工程,我們最好是新建一個Java Project,而不要直接在專案工程中進行,以免自動生成的檔名衝突而造成覆蓋。在新建的專案中生成程式碼,然後拷貝即可。
2)匯入jar包
在專案下新建lib,把jar拷貝進去
build path:
3)新建一個GerenatorConfig.xml配置檔案
新建配置檔案,主要配置以下資訊:
1、連線資料庫,這是必須的,要不然怎麼根據資料庫的表生成程式碼呢? 2、指定要生成程式碼的位置,要生成的程式碼包括po類,mapper.xml和mapper.java 3、指定資料庫中想要生成哪些表
<?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="MybatisGenerator" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自動生成的註釋,true是,false否 -->
<property name="supressAllComments" value="true" />
</commentGenerator>
<!-- 資料庫連線資訊:驅動類、連線地址、使用者名稱、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root" password="123456">
</jdbcConnection>
<!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 和
NUMERIC 型別解析為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成的po實體類的存放位置 -->
<javaModelGenerator targetPackage="com.oak.po"
targetProject=".\src">
<!-- enableSubPackages:是否讓schema作為包的字尾 -->
<property name="enableSubPackages" value="false" />
<!-- 從資料庫返回的值被清理前後的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成的mapper對映檔案(XML檔案)的存放位置 -->
<sqlMapGenerator targetPackage="com.oak.mapper" targetProject=".\src">
<!-- enableSubPackages:是否讓schema作為包的字尾 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成的mapper介面(JAVA檔案)的存放位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.oak.mapper" targetProject=".\src">
<!-- enableSubPackages:是否讓schema作為包的字尾 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定資料庫表 -->
<table tableName="student" />
<table tableName="grade" />
<!-- 有些表的欄位需要指定java型別
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
4)新建一個class為MyGenerator.java
此類主要是用來載入配置檔案,執行生成程式碼:
public class MyGenerator {
public void generate() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("GerenatorConfig.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 {
MyGenerator myGenerator = new MyGenerator();
myGenerator.generate();
} catch (Exception e) {
e.printStackTrace();
}
}
}