首頁 > 軟體

MyBatis Generator ORM層面的程式碼自動生成器(推薦)

2023-02-01 18:00:56

在日常開發工作中,我們往往需要自己去構建各種資料表所對應的持久化物件(POJO)、用於運算元據庫的介面(DAO)以及跟 DAO 所繫結的對應 XML。這都是一些重複性的操作,不需要多大技術含量。MyBatis Generator工具,能夠幫助我們去自動生成這些檔案。

MyBatis Generator 簡介

作為一個基於 MyBatis 的獨立工具,MyBatis Generator 能夠滿足我們以上的要求,能夠通過簡單的設定去幫我們生成資料表所對應的 POJO、DAO、XML 等檔案,減去我們手動去生成這些檔案的時間,有效提高開發效率。MyBatis Generator 執行方式多樣,主要可以通過以下幾種方式來執行:

  • 命令列
  • Ant
  • Maven
  • Java
  • IDE

Mybatis Generator簡稱 MBG,是一個專門為 MyBatis和 ibatis框架使用者提供的程式碼生成器。也可以快速的根據資料表生成對應的pojo類、Mapper介面、Mapper檔案,甚至生成QBC風格的查詢物件。

MyBatis Generator的使用

使用 MyBatis Generator,需要在專案中設定了資料庫和 MyBatis 的相關依賴。

引入外掛

<dependency>         
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> 
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
<!-- mybatis-generator -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

設定生成器檔案

<?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>
<!--targetRuntime="MyBatis3"-->
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
    <!-- 生成的Java檔案的編碼 -->
    <property name="javaFileEncoding" value="UTF-8" />
    <!-- beginningDelimiter和endingDelimiter:指明資料庫的用於標記資料庫物件名的符號,比如ORACLE就是雙引號,MYSQL預設是`反引號; -->
    <property name="beginningDelimiter" value="`" />
    <property name="endingDelimiter" value="`" />

    <!-- 註釋生成器 -->
    <commentGenerator>
        <property name="suppressDate" value="true" />
        <property name="suppressAllComments" value="true" />
    </commentGenerator>

    <!-- 必須要有的,使用這個設定連結資料庫 @TODO:是否可以擴充套件 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/mybatis"
                    userId="root"
                    password="1111">
    </jdbcConnection>

    <!-- 生成domain物件 -->
    <javaModelGenerator targetPackage="com.sunny.domain" targetProject="mybatis-11_MBG/src/main/java">
        <property name="enableSubPackages" value="true" />
    </javaModelGenerator>

    <!-- 生成Mapper檔案 -->
    <sqlMapGenerator targetPackage="com.sunny.mapper" targetProject="mybatis-11_MBG/srcmainresources">
        <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- 生成Mapper介面 -->
    <javaClientGenerator targetPackage="com.sunny.mapper" type="XMLMAPPER"
                         targetProject="mybatis-11_MBG/src/main/java">
        <property name="enableSubPackages" value="true" />
    </javaClientGenerator>


    <!-- Table   To   POJO -->
    <!--domainObjectName="User"-->
    <table tableName="user2" delimitIdentifiers="true">
        <property name="useActualColumnNames" value="true" />
        <generatedKey column="id" sqlStatement="JDBC" />
    </table>
  
</context>
</generatorConfiguration>

組態檔極為重要,對應資料庫表生成POJO物件的對映關係由組態檔完成。

執行組態檔

Java程式碼執行:

public class Generator {
	public static void main(String[] args) throws Exception {
		//MBG執行過程中的警告資訊
		List<String> warnings = new ArrayList<String>();
		//生成程式碼重複時,是否覆蓋原始碼
		boolean override = false;
		InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(in);

		DefaultShellCallback callback = new DefaultShellCallback(override);
		//建立MBG
		MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
		mbg.generate(null);
		//輸出警告資訊
		for (String warn : warnings) {
			System.out.println(warn);
		}
	}
}

通過Maven外掛執行:

如果使用Maven外掛,那麼不需要引入mybatis-generator-core依賴,只需要引入一個Maven的外掛mybatis-generator-maven-plugin

<plugins>
    <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
            <execution>
                <id>Generate MyBatis Artifacts</id>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <!-- 輸出詳細資訊 -->
            <verbose>true</verbose>
            <!-- 覆蓋生成檔案 -->
            <overwrite>true</overwrite>
            <!-- 定義組態檔 -->
            <configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
        </configuration>
    </plugin>
</plugins>

通過mvn mybatis-generator:generate執行,或者IDE一鍵執行。

參考文獻:

Mybatis程式碼生成器Mybatis-Generator使用詳解感謝作者!

MyBatis Generator 超詳細設定感謝作者!

到此這篇關於MyBatis Generator ORM層面的程式碼自動生成器的文章就介紹到這了,更多相關MyBatis Generator 程式碼自動生成器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com