1. 程式人生 > >MyBatis逆向工程生成程式碼(附原始碼)

MyBatis逆向工程生成程式碼(附原始碼)

什麼是逆向工程

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();
	        }
	    }
}

5)執行java類,檢視結果

在這裡插入圖片描述