Mybatis-generator插件的使用[IDEA]

mybatis-generator插件的使用[IDEA]

本文主要介紹在Maven項目中,如何利用mybatis-generator插件,用於自動生成MyBatis的Mapper和POJO。

一、新建項目

打開IDEA,新建Maven項目,不使用模板,然後項目命名爲mybatis-generator-demo,點擊Finish完成項目創建。

在這裏插入圖片描述

等待Maven導入依賴,項目如下:

在這裏插入圖片描述

二、添加插件

在pom.xml文件中添加如下插件信息:

<build>
    <!--放在finalName標籤的下面-->
    <plugins>
        <!--mybatis-generator插件-->
        <plugin>
            <!--Mybatis-generator插件,用於自動生成Mapper和POJO-->
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <configuration>
                <!--配置文件的位置  一定要改成配置文件的位置及名字-->
                <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <executions>
                <execution>
                    <id>Generate MyBatis Artifacts</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.2</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

之後,我們在Maven面板中插件一欄可以看到mybatis-generator:

在這裏插入圖片描述

三、創建mybatis generator配置文件

我們需要注意的是generatorConfig.xml文件的位置,在pom.xml文件中顯示配置文件的位置如下:

<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>

配置文件的內容如下,需要注意的點:

  • 將id修改爲項目名
  • 其他配置按需要修改
<?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 generator文檔地址:http://mybatis.org/generator/index.html  -->
<generatorConfiguration>
    <!-- 數據庫配置文件地址 -->
    <properties resource="db.properties"/>
    <!-- 數據庫驅動地址 -->
    <classPathEntry location="src/main/webapp/lib/mysql-connector-java-8.0.20.jar"/>
    <!-- id爲項目名 -->
    <context id="xxx" targetRuntime="MyBatis3">

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--數據庫鏈接URL,用戶名、密碼 -->
        <jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}">
        </jdbcConnection>

        <!-- 數據類型轉換 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成模型的包名和位置,按照項目實際情況修改 -->
        <javaModelGenerator targetPackage="xmu.lee.domain"
                            targetProject="src/main/java">
            <!-- enableSubPackages:是否讓schema作爲包的後綴 -->
            <property name="enableSubPackages" value="true"/>
            <!-- 從數據庫返回的值被清理前後的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 生成XML映射文件的包名和位置,按照項目實際情況修改 -->
        <sqlMapGenerator targetPackage="xmu.lee.mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 生成DAO的包名和位置 ,按照項目實際情況修改-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="xmu.lee.dao"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 要生成哪些表,可以有多個table元素 -->
        <!-- tableName:用於自動生成代碼的數據庫表;domainObjectName:對應於數據庫表的javaBean類名 -->
        <table tableName="tab_article"
               domainObjectName="Article">
            <!--  手動轉換數據庫Date爲java的LocalDate-->
            <!-- column爲數據庫列名 ,property爲java數據類型-->
            <columnOverride column="article_publish_date"
                            property="articlePublishDate"
                            jdbcType="DATE"
                            javaType="java.time.LocalDate"
                            typeHandler="org.apache.ibatis.type.LocalDateTypeHandler"></columnOverride>
        </table>
    </context>
</generatorConfiguration>

注意,默認情況下,mybatis generator會將數據庫DATE數據類型轉換爲java.time.Date類型,但由於Date類型不好用 ,所以我們要手動配置,將數據庫DATE數據類型轉換爲LocalDate類型。

<table> </table>中添加子元素<columnOveride>

<table tableName="tab_article"
               domainObjectName="Article">
            <!--  手動轉換數據庫Date爲java的LocalDate-->
            <!-- column爲數據庫列名 ,property爲java數據類型-->
            <columnOverride column="article_publish_date"
                            property="articlePublishDate"
                            jdbcType="DATE"
                            javaType="java.time.LocalDate"
                            typeHandler="org.apache.ibatis.type.LocalDateTypeHandler">			  </columnOverride>
</table>
  • column爲數據庫列名
  • property爲實體類的屬性名
  • jdbcType爲數據庫字段數據類型,必須爲大寫
  • javaType就是要轉換的實體屬性的數據類型
  • typeHandler爲轉換引擎,注意不要寫錯了,將DATE轉換爲LocalDate就寫LocalDateTypeHandler

四、創建數據庫配置文件

src/main/resources下創建數據庫配置文件db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456

此處使用的數據庫版本是MySQL 8.0.20,所以數據庫驅動爲com.mysql.cj.jdbc.Driver,並且在數據庫連接url後面需要加上時區。


五、引入數據庫驅動文件

因爲在generatorConfig.xml文件中需要指定數據庫驅動文件位置lib/mysql-connector-java-8.0.20.jar,所以我們需要在項目下新建lib文件夾,然後將數據庫驅動放進該文件夾。

在這裏插入圖片描述

六、運行插件

在Maven面板中選擇該插件,右擊運行:

在這裏插入圖片描述

之後再項目結構中,能看到新生成的模型、映射配置文件等:

在這裏插入圖片描述

七、創建mybatis配置文件

mybatis generator插件只是幫助我們生成了一些枯燥的代碼,不用我們自己寫而已。如果要使用MyBatis,仍然需要MyBatis配置文件,在src/main/resources下創建MyBatis配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <properties resource="db.properties"></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${database.driver}"/>
                <property name="url" value="${database.url}"/>
                <property name="username" value="${database.username}"/>
                <property name="password" value="${database.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/test/mapper/PlayerMapper.xml"></mapper>
    </mappers>

</configuration>

最主要的是設置映射配置文件的位置。

然後還要在pom.xml文件中加入數據庫驅動和mybatis依賴:

<dependencies>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.5</version>
    </dependency>

</dependencies>

八、總結

mybatis generator插件並不是爲了替代MyBatis,而是幫助我們自動生成模型代碼、映射配置文件、Mapper接口代碼,免除了繁瑣的持久層代碼編寫工作,所以在生成代碼之後,不要忘記創建MyBatis配置文件以及添加依賴。

最後整個項目結構如下(紅框中的是mybatis generator生成的,綠框的是自己需要創建的):

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章