天天看點

使用mybatis-generator逆向生成表對應的POJO類使用mybatis-generator逆向生成表對應的POJO類

使用mybatis-generator逆向生成表對應的POJO類

環境和版本說明

IDEA 2017.2.7

maven 3.5.3

mybatis 3.4.1

mybatis-generator-core 1.3.6

postgresql 9.6

首先建立資料庫表

使用mybatis-generator逆向生成表對應的POJO類使用mybatis-generator逆向生成表對應的POJO類

pom.xml

檔案中需要的相關依賴包

<!-- mybatis -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.1</version>
      </dependency>

      <!-- mybatis-generator-core -->
      <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.6</version>
      </dependency>

      <!-- postgresql -->
      <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <version>42.2.2</version>
      </dependency>           

添加

mybatis-generator-maven-plugin

插件.

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.6</version>
    <dependencies>
        <!-- mybatis-generator插件需要的依賴, 這裡必須添加進來 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.2</version>
        </dependency>
    </dependencies>
</plugin>           

建立

generatorConfig.xml

配置檔案

src/main/resources

包下建立逆向工程配置檔案

generatorConfig.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="my_tables" targetRuntime="MyBatis3">

        <!-- 注釋相關設定 -->
        <commentGenerator>
            <!-- 是否去除自動生成的注釋, true: 是; false: 否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--資料庫連接配接的資訊:驅動類、連接配接位址、使用者名、密碼 -->
        <jdbcConnection driverClass="org.postgresql.Driver"
                        connectionURL="jdbc:postgresql://127.0.0.1:5432/springboot?charSet=utf-8"
                        userId="postgres"
                        password="password">
        </jdbcConnection>

        <!-- 預設false, 把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer; 為 true 時把 JDBC DECIMAL 和
            NUMERIC 類型解析為 java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成POJO類的位置. targetPackage為包名, targetProject為項目位置, 采用相對路徑 -->
        <javaModelGenerator targetPackage="com.tao.smp.generator.entity"
                            targetProject="src/main/java">
            <!-- enableSubPackages: 是否讓schema作為包的字尾 -->
            <property name="enableSubPackages" value="false" />
        </javaModelGenerator>

        <!-- mapper映射檔案生成的位置 -->
        <!--<sqlMapGenerator targetPackage="com.tao.smp.generator.mapper"
                         targetProject="src/main/java">
            &lt;!&ndash; enableSubPackages: 是否讓schema作為包的字尾 &ndash;&gt;
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>-->

        <!-- mapper接口生成的位置 -->
        <!--<javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.tao.smp.generator.dao"
                             targetProject="src/main/java">
            &lt;!&ndash; enableSubPackages: 是否讓schema作為包的字尾 &ndash;&gt;
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>-->

        <!-- 指定資料庫表 -->
        <table schema="" tableName="tb_classroom">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_department">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_employee">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_post">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_student">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>
        <table schema="" tableName="tb_user">
            <domainObjectRenamingRule searchString="^Tb" replaceString="" />
        </table>

        <!-- 有些表的字段需要指定java類型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>           

需要修改的地方:

  1. javaModelGenerator, 生成PO類的位置
  2. sqlMapGenerator, mapper映射檔案生成的位置
  3. javaClientGenerator, mapper接口生成的位置
  4. table, 其中tableName屬性對應資料庫中相應表

注意幾點:

1、targetProject位置

<!-- 生成POJO類的位置. targetPackage為包名, targetProject為項目位置, 采用相對路徑 -->
<javaModelGenerator targetPackage="com.tao.smp.generator.entity"
                            targetProject="src/main/java">
    <!-- enableSubPackages: 是否讓schema作為包的字尾 -->
    <property name="enableSubPackages" value="false" />
</javaModelGenerator>           

targetProject表示的是項目的相對位置, 這個相對位置相對的是你執行

mvn mybatis-generator:generate

的位置. 當我們點選IDEA下面一行中的

Terminal

視窗的時候, 打開了指令行界面, 此時項目已經定位到

項目名

下, 是以這裡的targetProject的值我們填寫

src/main/java

, 這是相對于我們的項目名的位址.

targetPackage則是要指定targetProject下的包名.

2、如何去掉生成的POJO實體類的字首

預設情況下, 生成的POJO實體類和資料庫表名是對應的, 也就是說

tb_user

表對應生成的POJO實體類為

TbUser

, 要想去掉

Tb

字首, 可以通過添加

domainObjectRenamingRule

标簽來達到目的.

<table schema="" tableName="tb_classroom">
    <domainObjectRenamingRule searchString="^Tb" replaceString="" />
</table>           

^

是正規表達式中表示從起始位置開始比對的符号.

searchString

作用的對象是生成的實體類的名字, 是以這裡的是大寫的

T

.

運作, 生成POJO實體類

點選 IDEA 的

Terminal

進入指令行界面, 輸入

mvn mybatis-generator:generate

, 回車. 等待

BUILD SUCCESS

, 然後就能在對應的包下找到生成的實體類了.

使用mybatis-generator逆向生成表對應的POJO類使用mybatis-generator逆向生成表對應的POJO類

繼續閱讀