MyBatis-逆向工程「Generator使用指南」

這篇我們學習MyBatis Generator的使用,Generator是Mybatis的一個代碼生成器,它可以根據數據庫表生成類、映射文件Mapper、數據操作的接口。並且Generator可以自動爲每個表生成簡單得CRUD(插入,查詢,更新,刪除)的實現代碼,這是非常強大和方便的。但是如果有別的業務許需求,還是得自己寫SQL,教程利用Maven的方式來逆向生成代碼。

Maven是什麼?

當你利用搜索引擎搜索Maven會出來很多名詞:對象模型、標準集合、依賴管理系統這是啥啊?差不多得你會用了Maven纔會理解這些名稱吧,我找到了一個博主的博客

blog.csdn.net/qq_27376871/article/details/51612742他做了不錯的總結,Maven可以幹什麼:

1 . 幫你下載jar包

maven項目會有一個 pom.xml文件, 在這個文件裏面,只要你添加相應配置,他就會自動幫你下載相應jar包,不用你鋪天蓋地的到處搜索你需要的jar包了 。maven都會通過:項目名-項目模塊-項目版本來maven在互聯網上的代碼庫中下載相應jar包。尋找jar的地址:http://search.maven.org

所以這就是maven的功能之一,幫你下載jar包

2 . 尋找依賴,幫你下載依賴

尋找jar包是第一基本功能,尋找依賴在這個是在這個基礎上的功能。

在maven的代碼庫中,每一個jar包也有自己的 pom.xml文件,而這個文件裏面也會有<dependency>配置,什麼依賴範圍我就不細說了,我想表達的就是,只要你配置的jar包所依賴的其他jar包都會被maven自動下載下來。

例如:你配置了

<dependency>         
<groupId>org.springframework</groupId>      
<artifactId>spring-core</artifactId>       
<version>3.6</version>   
</dependency>

你需要maven幫你下載spring-core-3.6.jar包 ,而這個jar包裏面需要用到commons-logging.jar這個包, 這叫就依賴,spring-core-3.6.jar依賴於commons-logging.jar。 這就是maven第二個作用,幫你下載依賴包。

3 . 熱部署,熱編譯

意思就是,在你web項目已經運行的時候,修改代碼的能直接被web服務器所接受,就不需要你 重啓服務器了,或者重新部署代碼了,而且你可以直接通過maven 打包war或者jar項目。

搭建

1. 創建Maven工程

2. 設置GroupId

3. 控制檯打印:BUILD SUCCESS 創建成功

4. 自己創建resource目錄

注:通過右鍵->Mark directory As來設置文件爲源碼目錄或者資源目錄(即更改文件夾得顏色)

5. 配置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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.generator</groupId>
 <artifactId>generator</artifactId>
 <version>1.0-SNAPSHOT</version>
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <maven.compiler.source>1.7</maven.compiler.source>
   <maven.compiler.target>1.7</maven.compiler.target>
 </properties>
 <build>
   <finalName>mybatis_generator</finalName>
   <plugins>
     <!--mybatis反向生成代碼的插件配置-->
     <plugin>
       <groupId>org.mybatis.generator</groupId>
       <artifactId>mybatis-generator-maven-plugin</artifactId>
       <version>1.3.3</version>
     </plugin>
   </plugins>
 </build>
</project>

給出的pox.xml是用來配置依賴和插件的配置文件,記住上方<plugin>標籤中配置了mybatis generator的插件,IDE會自動幫我們下載。

6. 創建存放pojo、mapper等所在包

注意:上方Mappers、dao、pojo包是空的

7. 配置generatorConfig.xml

在src/main/resource目錄下創建generatorConfig.xml配置文件,這個文件用來做mapper、pojo生成位置、數據庫相關等配置,具體看代碼註釋。

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>
   <!-- 數據庫驅動包位置 -->
   <classPathEntry location="D:\mysql-jar\mysql-connector-java-5.1.35.jar" />
   <context id="mysql" targetRuntime="MyBatis3" defaultModelType="flat">

       <!-- 爲了防止生成的代碼中有很多註釋,比較難看,加入下面的配置控制 -->
       <commentGenerator>
           <property name="suppressAllComments" value="true" />
           <property name="suppressDate" value="true"/>
       </commentGenerator>

       <!-- 必須要有的,使用這個配置鏈接數據庫,url、密碼等 -->
       <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="rootadmin">
           <!-- 這裏面可以設置property屬性,每一個property屬性都設置到配置的Driver上 -->
           <property name="useUnicode" value="true"/>
           <property name="characterEncoding" value="UTF-8"/>
       </jdbcConnection>

       <javaModelGenerator targetPackage="com.generator.pojo" targetProject="D:\文檔\項目\Generator\src\main\java">
           <property name="constructorBased" value="false"/>
           <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認爲false -->
           <property name="enableSubPackages" value="true" />
           <!-- for MyBatis3 / MyBatis3Simple
               是否創建一個不可變的類,如果爲true,
               那麼MBG會創建一個沒有setter方法的類,取而代之的是類似constructorBased的類
            -->
           <property name="immutable" value="false"/>
           <!-- 設置是否在getter方法中,對String類型字段調用trim()方法 -->
           <property name="trimStrings" value="true"/>
       </javaModelGenerator>

       <!--
           生成SQL map的XML文件生成器,
           注意,在Mybatis3之後,我們可以使用mapper.xml文件+Mapper接口(或者不用mapper接口),
               或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的話,這個元素就必須配置
               targetPackage/targetProject:同javaModelGenerator
       -->
       <sqlMapGenerator targetPackage="Mappers" targetProject="D:\文檔\項目\Generator\src\main\resources">
           <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認爲false -->
           <property name="enableSubPackages" value="true"/>
       </sqlMapGenerator>

       <!-- dao包名和位置 -->
       <javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.dao" targetProject="D:\文檔\項目\Generator\src\main\java">
           <!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認爲false -->
           <property name="enableSubPackages" value="true"/>
       </javaClientGenerator>

       <!-- 表配置 -->
       <table tableName="user" domainObjectName="User" >
           <!-- 參考 javaModelGenerator 的 constructorBased屬性-->
           <property name="constructorBased" value="false"/>
           <!-- 默認爲false,如果設置爲true,在生成的SQL中,table名字不會加上catalog或schema; -->
           <property name="ignoreQualifiersAtRuntime" value="false"/>
           <!-- 指定是否只生成domain類,如果設置爲true,只生成domain類,如果還配置了sqlMapGenerator,那麼在mapper XML文件中,只生成resultMap元素 -->
           <property name="modelOnly" value="false"/>
           <!-- 如果設置爲true,生成的model類會直接使用column本身的名字,而不會再使用駝峯命名方法,比如BORN_DATE,生成的屬性名字就是BORN_DATE,而不會是bornDate -->
           <property name="useActualColumnNames" value="true"/>
       </table>
   </context>
</generatorConfiguration>

對於上面的配置文件都已經做了註釋,簡單提取出來可以總結爲下方几條,只需要正確配置,便可以完成逆向工程的功能:

  • classPathEntry 配置數據庫驅動包位置
  • commentGenerator下配置是否去掉註釋
  • jdbcConnection數據庫鏈接URL、用戶名、密碼
  • javaModelGenerator生成模型的包名和位置
  • sqlMapGenerator生成映射文件包名和位置
  • javaClientGenerator生成DAO的包名和位置
  • table要生成哪些表

當然上方generatorConfig.xml僅僅是簡單配置,還有很多配置參數沒有給出,我有一份比較詳細的配置,每一條配置都做了非常詳細註釋,比如下圖:

我把上面這份非常詳細註釋的配置文件放到公衆號,你可以讀完本文中在公衆號內回覆:「generatorConfig.xml」就可以獲取了,以後配置看不懂,讀這個配置文件的註釋就可以了。

8. 運行插件

9. 在右側欄Maven Project->plugin->mybatis-generator

10. 雙擊mybatis-generator:generate 運行

11. 運行結果

控制檯打印出:BUILD SUCCESS 證明成功

發現pojo、dao、Mappers包多出了自動生成的代碼

12. 查看生成的代碼

在com.generator.dao包生成了相關接口,和Mappers中的mapper相對應

在com.generator.user包中根據數據庫表生成了對應的實體類

UserMapper.xml中生成了對user表進行增刪改查的簡單SQL

到這裏我們關於mybati-generator的使用介紹的差不多了,非常基礎,相信對剛剛學習這門技術的同學來說是不錯的指導。

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