SpringBoot的整合(三、整合mybatis補:自動生成工具的使用mysql5和mysql8版本的兩種版本和兩種生成方式)


本篇文章是基於上篇文章的代碼基礎上進行的添加,具體代碼可以參考上篇文章:SpringBoot的整合(三、整合mybatis)

注意:本篇文章連接的數據庫為mysql8.0.16版本的,跟低版本的稍微有些不同。

使用mybatis進行開發的時候,model類、mapper.xml、mapper接口等都自己寫十分浪費時間,這里介紹兩種自動生成代碼文件的工具:

一、使用mybatis的generator工具。

(1)首先pom.xml文件中添加

<!--mysql-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>8.0.16</scope>
</dependency>
<!--mybatis自動生成工具-->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.5</version>
</dependency>

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>4.0.0</version>
</dependency>


<!--mybatis自動生成工具-->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.5</version>
    <configuration>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
        <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.0.0</version>
        </dependency>
    </dependencies>
</plugin>

pom.xml(全)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.flyinghome</groupId>
    <artifactId>tm</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>tm</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>8.0.16</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- alibaba的druid數據庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

        <!--lombok:引用了之后,實體類就不需要寫getter、setter、toString方法了-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
        </dependency>
        <!--pagehelper分頁-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!--mybatis自動生成工具-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.0.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--mybatis自動生成工具-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                    <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.16</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.0.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>
pom.xml

(2)創建mybatis-generator.xml文件

路徑在resources文件夾下,位置不固定,如果修改了,需要對應修改pom.xml文件中的<configurationFile>標簽內的地址。

里面需要修改的地方:

1. 數據連接的數據庫名、數據庫地址、賬號、密碼。

2. 生成model、xml、mapper接口、table標簽名稱等信息。

注意:數據庫連接的driverClass,高版本為com.mysql.cj.jdbc.Driver。低版本為com.mysql.jdbc.Driver。

高版本:

<?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="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3">
    <!-- 生成的Java文件的編碼 -->
    <property name="javaFileEncoding" value="UTF-8"/>
    <!-- 格式化java代碼 -->
    <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
    <!-- beginningDelimiter和endingDelimiter:指明數據庫的用於標記數據庫對象名的符號,比如ORACLE就是雙引號,MYSQL默認是`反引號; -->
    <property name="beginningDelimiter" value="`"/>
    <property name="endingDelimiter" value="`"/>
    <!-- JavaBean 實現 序列化 接口 -->
    <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

    <!-- generat entity時,生成toString -->
    <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
    <!-- 此處是將Example改名為Criteria 當然 想改成什么都行~    -->
    <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
        <property name="searchString" value="Example$"/>
        <property name="replaceString" value="Selective"/>
    </plugin>

    <commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
        <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
        <property name="suppressAllComments" value="true"/>
    </commentGenerator>

    <!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8" userId="root"
                    password="root">
        <property name="nullCatalogMeansCurrent" value="true"/>
    </jdbcConnection>
    <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和
        NUMERIC 類型解析為java.math.BigDecimal -->
    <javaTypeResolver>
        <property name="forceBigDecimals" value="true"/>
    </javaTypeResolver>

    <!-- targetProject:生成PO類的位置 -->
    <javaModelGenerator targetPackage="com.flyinghome.tm.model"
                        targetProject="./src/main/java">
        <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false -->
        <property name="enableSubPackages" value="true"/>
        <!-- 從數據庫返回的值被清理前后的空格 -->
        <property name="trimStrings" value="true"/>
    </javaModelGenerator>
    <!-- targetProject:mapper映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">
        <!-- enableSubPackages:是否讓schema作為包的后綴 -->
        <property name="enableSubPackages" value="true"/>
    </sqlMapGenerator>

    <!-- targetPackage:mapper接口生成的位置 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.flyinghome.tm.dao"
                         targetProject="./src/main/java">
        <!-- enableSubPackages:是否讓schema作為包的后綴 -->
        <property name="enableSubPackages" value="true"/>
    </javaClientGenerator>

    <!-- 指定數據庫表 -->
    <!-- <table schema="" tableName="WECHAT_MESSAGE"/> -->

    <table schema="" tableName="user_info" domainObjectName="UserDO"/>
    <!-- 指定數據庫所有表  -->
    <!-- <table schema="" tableName="%"/> -->
    <!-- 有些表的字段需要指定java類型
     <table schema="" tableName="">
        <columnOverride column="" javaType="" />
    </table> -->
</context>
</generatorConfiguration>

低版本:

<?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="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3">
        <!-- 生成的Java文件的編碼 -->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!-- 格式化java代碼 -->
        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
        <!-- beginningDelimiter和endingDelimiter:指明數據庫的用於標記數據庫對象名的符號,比如ORACLE就是雙引號,MYSQL默認是`反引號; -->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <!-- JavaBean 實現 序列化 接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

        <!-- generat entity時,生成toString -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <!-- 此處是將Example改名為Criteria 當然 想改成什么都行~    -->
        <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
            <property name="searchString" value="Example$"/>
            <property name="replaceString" value="Selective"/>
        </plugin>

        <commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
            <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/test?useSSL=false" userId="root"
                        password="root">
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>
        <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和
            NUMERIC 類型解析為java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="true"/>
        </javaTypeResolver>

        <!-- targetProject:生成PO類的位置 -->
        <javaModelGenerator targetPackage="com.dataobject"
                            targetProject="./src/main/java">
            <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false -->
            <property name="enableSubPackages" value="true"/>
            <!-- 從數據庫返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mapping" targetProject="./src/main/resources">
            <!-- enableSubPackages:是否讓schema作為包的后綴 -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.tm.dao"
                             targetProject="./src/main/java">
            <!-- enableSubPackages:是否讓schema作為包的后綴 -->
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 指定數據庫表 -->
        <!-- <table schema="" tableName="WECHAT_MESSAGE"/> -->

        <table schema="" tableName="user" domainObjectName="userDO"/>
        <!-- 指定數據庫所有表  -->
        <!-- <table schema="" tableName="%"/> -->
        <!-- 有些表的字段需要指定java類型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>

(3)執行生成對應的文件。

點擊run--Edit Configurations--點擊 '+' 按鈕,創建一個maven--右側填寫Command line的值為:mybatis-generator:generate  (手動填寫,會有提示)

選中我們剛才創建的,之后點擊執行。

控制台:

原目錄vs新目錄:

二、使用idea工具

首先需要下載一下easy code這個插件,下載安裝完成后,重啟ideal。

之后點擊ideal軟件窗口右側的Database按鈕,點擊符號 '+' ,選擇Data Source中的MySQL。

彈出如下框體,輸入User、Password、Database(數據庫名稱),之后點擊下面的Test Connection按鈕進行連接測試。

如圖,提示我缺少驅動,直接按照提示點擊進行下載。

 

下載之后,再次點擊連接測試按鈕測試,提示Successful。

 

此時,點擊Apply、ok退出之后,發現已經有了一條連接,但是點開之后,這是什么鬼。。。。

沒有我們想要的表結構,解決辦法如下,點擊下圖的按鈕

在彈出的框中,選中Schemas,之后勾選上自己需要的數據庫。

 

此時再點開這條連接,就會發現表和對應的結構出來了。

在任意一個表名上右鍵,選中EasyCode---Generate Code

之后彈出如下框,選中一個生成的路徑,之后勾選要生成的文件,點擊OK。

可以看到已經生成了對應的目錄和文件了,我這里報錯是因為已經有了一個User類了。

 

至此,兩種方法已經介紹完畢。

 

 

 

參考:

1. https://www.cnblogs.com/kosi/p/11289551.html

持續更新!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM