使用mybatis-generator逆向生成表對應的POJO類
環境和版本說明
IDEA 2017.2.7
maven 3.5.3
mybatis 3.4.1
mybatis-generator-core 1.3.6
postgresql 9.6
首先建立資料庫表
pom.xml
檔案中需要的相關依賴包
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
配置檔案
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">
<!– enableSubPackages: 是否讓schema作為包的字尾 –>
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>-->
<!-- mapper接口生成的位置 -->
<!--<javaClientGenerator type="XMLMAPPER"
targetPackage="com.tao.smp.generator.dao"
targetProject="src/main/java">
<!– enableSubPackages: 是否讓schema作為包的字尾 –>
<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>
需要修改的地方:
- javaModelGenerator, 生成PO類的位置
- sqlMapGenerator, mapper映射檔案生成的位置
- javaClientGenerator, mapper接口生成的位置
- 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
, 然後就能在對應的包下找到生成的實體類了.