YMP開發框架快速上手(五)— 自動生成數據實體

本文基於上一篇《YMP開發框架快速上手(四)— 極速開發體驗》博文中建立的ymp-examples-webapp項目,介紹若是快速生成數據實體。java

YMP框架的數據實體生成方式目前有兩種:mysql

  1. 直接執行實體生成器類git

  2. 經過YMP框架提供的Maven擴展工具插件web

準備工做

在生成實體以前,須要先將示例工程中的默認數據源和實體生成規則配置好,確認ymp-conf.properties如下內容:sql

  • 配置默認數據源:數據庫

    # 數據庫鏈接字符串
      ymp.configs.persistence.jdbc.ds.default.connection_url=jdbc:mysql://localhost:3306/mydb
    
      # 數據庫訪問用戶名
      ymp.configs.persistence.jdbc.ds.default.username=root
    
      # 數據庫訪問密碼
      ymp.configs.persistence.jdbc.ds.default.password=
  • 實體生成規則:api

    # 是否使用類名後綴,不使用和使用的區別如: User-->UserModel,默認爲false
      #ymp.params.jdbc.use_class_suffix=
    
      # 是否採用鏈式調用模式,默認爲false
      ymp.params.jdbc.use_chain_mode=true
    
      # 數據庫名稱(僅針對特定的數據庫使用,如Oracle),默認爲空
      #ymp.params.jdbc.db_name=
    
      # 數據庫用戶名稱(僅針對特定的數據庫使用,如Oracle),默認爲空
      #ymp.params.jdbc.db_username=
    
      # 數據庫表名稱前綴,多個用'|'分隔,默認爲空
      ymp.params.jdbc.table_prefix=ymp_
    
      # 否剔除生成的實體映射表名前綴,默認爲false
      ymp.params.jdbc.remove_table_prefix=true
    
      # 預生成實體的數據表名稱列表,多個用'|'分隔,默認爲空表示所有生成
      ymp.params.jdbc.table_list=
    
      # 排除的數據表名稱列表,在此列表內的數據表將不被生成實體,多個用'|'分隔,默認爲空
      #ymp.params.jdbc.table_exclude_list=
    
      # 生成的代碼文件輸出路徑,默認爲${root}
      #ymp.params.jdbc.output_path=
    
      # 生成的代碼所屬包名稱,默認爲: packages
      ymp.params.jdbc.package_name=net.ymate.platform.examples

方式一:直接執行實體生成器類

步驟1:修改依賴關係

打開pom.xml文件並將下列依賴配置的註釋去掉:app

<dependency>
	<groupId>net.ymate.platform</groupId>
    <artifactId>ymate-platform-persistence-jdbc</artifactId>
    <version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.35</version>
</dependency>
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.22</version>
</dependency>

步驟2:執行實體生成器

在示例工程的根路徑下執行Maven命令:框架

mvn compile exec:java -Dexec.mainClass="net.ymate.platform.persistence.jdbc.scaffold.EntityGenerator"

注意:在Web工程中採用方式一生成實體須要注意如下幾點問題:webapp

  1. 示例項目是Web程序,編譯期間須要servlet-apijsp-api包依賴,運行時是不須要它們的(由於Web容器中已提供),因爲它們的做用域被設置爲provided, 當執行實體生成器時會產生找不到這兩個包的編譯錯誤,因此當你須要執行實體生成器時就將這兩個包的<scope>provided</scope>配置註釋掉。

  2. 基於YMP框架的Web項目,其根路徑默認爲WEB-INF\,而普通Java工程的根路徑默認爲當前項目的CLASSPATH,因此在執行實體生成器時,須要確認ymp.configs.configuration.config_home和日誌相關的配置參數的正確性。

  3. 確認代碼生成的文件輸出路徑ymp.params.jdbc.output_path參數配置的正確性。

  4. 因爲代碼生成器執行時依賴YMP框架(也就是說全部的模塊都將會被初始化),因此須要經過ymp.excluded_modules參數屏蔽掉不須要啓動的模塊。

經過方式一生成實體顯示有些繁瑣,須要注意和調整的內容比較多,所以推薦你們使用第二種方式,採用方式二請忽略上述限制。

方式二:經過YMP框架提供的Maven擴展工具插件

步驟1:編譯並安裝ymate-maven-extension擴展工具

  • 下載擴展工具源碼(YMP框架Maven擴展工具項目地址

    執行命令:git clone https://git.oschina.net/suninformation/ymate-maven-extension.git
  • 編譯並安裝到本地Maven倉庫

    執行命令: cd ymate-maven-extension
               mvn clean install

步驟2:將pom.xml中添加ymate-maven-plugin插件

<plugin>
	    <groupId>net.ymate.maven.plugins</groupId>
	    <artifactId>ymate-maven-plugin</artifactId>
	    <version>1.0-SNAPSHOT</version>
	</plugin>

步驟3:執行插件生成實體

在工程根路徑下執行命令:

mvn ymate:entity

輸出內容:

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO] ......(此處省略若干字)
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:entity (default-cli) @ ymp-examples-webapp ---
三月 25, 2016 12:25:07 上午 net.ymate.platform.core.YMP init
信息: 
__   ____  __ ____          ____  
\ \ / /  \/  |  _ \  __   _|___ \ 
 \ V /| |\/| | |_) | \ \ / / __) |
  | | | |  | |  __/   \ V / / __/ 
  |_| |_|  |_|_|       \_/ |_____|  Website: http://www.ymate.net/
三月 25, 2016 12:25:07 上午 net.ymate.platform.core.YMP init
信息: Initializing ymate-platform-core-2.0.0-GA build-20160324-2339 - debug:true
......(此處省略若干字)
信息: [show tables][][1][13ms]
Output file "/Users/suninformation/IdeaProjects/ymate-platform-examples/ymp-examples-webapp/src/main/java/net/ymate/platform/examples/model/User.java".
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.577s
[INFO] Finished at: Fri Mar 25 00:25:08 CST 2016
[INFO] Final Memory: 10M/163M
[INFO] ------------------------------------------------------------------------

經過插件生成的代碼默認放置在src/main/java路徑,當數據庫表發生變化時,直接執行插件命令就能夠快速更新數據實體對象,是否是很更方便呢,你們能夠動手嘗試一下!:p

特別提示

  • 若是使用的JDBC驅動是mysql-connector-java-6.x及以上版本時,須要配置db_namedb_username參數,不然會產生異常;

One More Thing

YMP不只提供便捷的Web及其它Java項目的快速開發體驗,也將不斷提供更多豐富的項目實踐經驗。

感興趣的小夥伴兒們能夠加入 官方QQ羣480374360,一塊兒交流學習,幫助YMP成長!

瞭解更多有關YMP框架的內容,請訪問官網:http://www.ymate.net/

相關文章
相關標籤/搜索