MyBatis程式碼生成器的實用

PostMan_Zc發表於2024-06-09

MyBatis程式碼生成器可以幫助我們快速的構建一些固定的程式碼

重要:程式碼生成器生成的程式碼不能被修改,否則在新增新的欄位以後,再次執行程式碼生成器,修改後的內容可能會丟失

在專案中引入程式碼生成器的主要步驟:

  • 新建生成器模組,引入相關外掛
 <!-- mybatis generator 自動生成程式碼外掛 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <!--<configurationFile>src/main/resources/generator-config-member.xml</configurationFile>-->
                    <configurationFile>src/main/resources/generator-config-business.xml</configurationFile>
                    <!--<configurationFile>src/main/resources/generator-config-batch.xml</configurationFile>-->
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.22</version>
                    </dependency>
                </dependencies>
            </plugin>
  • 在新模組的resources下加入如下的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>
    <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">

        <!-- 自動檢查關鍵字,為關鍵字增加反引號 -->
        <property name="autoDelimitKeywords" value="true"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!--覆蓋生成XML檔案-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
        <!-- 生成的實體類新增toString()方法 -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>

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

        <!-- 配置資料來源,需要根據自己的專案修改 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://rm-uf62v90x7t5hukv5dro.mysql.rds.aliyuncs.com/train_member?serverTimezone=Asia/Shanghai"
                        userId="train_member"
                        password="Member123">
        </jdbcConnection>

        <!-- domain類的位置 targetProject是相對pom.xml的路徑-->
        <javaModelGenerator targetProject="../member/src/main/java"
                            targetPackage="com.jiawa.train.member.domain"/>

        <!-- mapper xml的位置 targetProject是相對pom.xml的路徑 -->
        <sqlMapGenerator targetProject="../member/src/main/resources"
                         targetPackage="mapper"/>

        <!-- mapper類的位置 targetProject是相對pom.xml的路徑 -->
        <javaClientGenerator targetProject="../member/src/main/java"
                             targetPackage="com.jiawa.train.member.mapper"
                             type="XMLMAPPER"/>

        <!--<table tableName="member" domainObjectName="Member"/>-->
        <table tableName="passenger" domainObjectName="Passenger"/>
    </context>
</generatorConfiguration>

在匯入上述檔案的過程中,可能會出現URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)這個問題,解決方案參考這篇文章

  • 執行上述的外掛,可以得到資料庫對應的實體類,並且生成mapper層常用的方法以及sql xml檔案

相關文章