generator自動生成ibatis代碼

MBG有一個配置文件generatorConfig.xml。在裏面設置連接數據庫配置、javaModel、sqlMap、javaClient,table

 

<?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>
	<!-- 引入配置文件,可以通過${sqljdbcPath}取值 -->
	<properties url="file:///D:/workspaces/mybatisGen/bin/generatorConfig.properties"/>
	<!-- classPathEntry用於設置數據庫的JDBC驅動的jar包地址,location可以等於只包含了數據庫驅動的jar或zip路經,也可以是一個包含驅動的目錄 -->
	<classPathEntry location="c:/ojdbc14.jar" />
	<!-- targetRuntime:代碼生成目標,默認是MyBatis3,可以是Ibatis2Java2或者Ibatis2Java5。生成對象兼容MyBatis版本3.0和更高版本,和JSE 5.0和更高版本 -->
	<!-- defaultModelType:用來定義生成模型類型策略。1.conditional 默認策略,爲每個表生成一個Model class;2.flat:將所有的表中生成一個Model class,即這個類將保存所有表中字段;3.hierarchical :如果表有一個主鍵,該模型將生成一個主鍵類,另一個類,用於容納任何BLOB列在表中,和另一個類,用於容納其餘的字段。這個是一個適當的繼承類之間的關係 -->
	<context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="conditional">
		<commentGenerator>  
			<!-- 是否去除自動生成的註釋,默認false,true:去除;false:不去除 -->  
			<property name="suppressAllComments" value="true" />
			<!-- 指定在生成的註釋是否將包括時間戳,默認是false -->
			<property name="suppressDate" value="true" />
		</commentGenerator>
		<!-- 數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
		<jdbcConnection
			driverClass="oracle.jdbc.driver.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ZFGJJ" 
			userId="hr"
			password="hr">
		</jdbcConnection>
		<!-- 解決數字轉換問題 -->
		<javaTypeResolver>
			<!-- 只有一個屬於forceBigDecimals,默認false。如果字段精確超過0,生成BigDecimal 如果字段精確是0,總長度10-18生成Long; 如果字段精確是0,總長5-9生成Integer; 如果字段精確是0,總長小於5生成Short; 如果forceBigDecimals爲true,統一生成BigDecimal -->
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- Model生成配置 targetPackage:生成包路徑,自動生成目錄。targetProject:項目路經,可以絕對路徑或者相對路徑。 -->
		<javaModelGenerator targetPackage="test.model" targetProject="D:\Workspace\mylearn\mybatis\">
			<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
			<property name="enableSubPackages" value="true" />
			<!-- 從數據庫返回的值被清理前後的空格  -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- sqlMap配置 -->
		<sqlMapGenerator targetPackage="test.sqlmap" targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>
		<!-- DAO接口的生成 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- tableName:用於自動生成代碼的數據庫表;domainObjectName:對應於數據庫表的javaBean類名,如果未指定自動基於表名生成 -->
		<!-- table其他屬性:enableCountByExample="false";enableUpdateByExample="false";enableDeleteByExample="false";enableSelectByExample="false";selectByExampleQueryId="false";schema即爲數據庫名, tableName爲對應的數據庫表, domainObjectName是要生成的實體類 -->
		<table schema="hr" tableName="countries" domainObjectName="Customer">
			<!-- 忽略字段 -->
			<ignoreColumn column="columnName" />

			<!-- 無論字段是什麼類型,生成的類屬性都是varchar -->
			<columnOverride column="columnName" jdbcType="VARCHAR" />
                        <!-- 修改數據庫列名映射的javabean屬性名 -->
			<columnOverride column="oldColumnName" property="propertyName" />

			<!-- 主鍵生成 如果用了這個 generatedKey ,MBG將在sqlmpper.xml裏生成一個 selectKey元素在用在<insert>元素裏 。 -->
			<generatedKey column="columnName" sqlStatement="JDBC" identity="true" />
			<generatedKey column="ID" sqlStatement="MySql" identity="true" />

			<!-- javabean繼承的父類 -->
			<property name="rootClass" value="com.xxx.commons.entity.IdEntity"/>

			<property name="useActualColumnNames" value="true"/>
		</table>
	</context>
</generatorConfiguration>
 

 

<javaModelGenerator>元素用於定義Java模型生成的屬性
支持的屬性:
constructorBased:默認值是false

此屬性用於選擇是否MyBatis生成器將生成一個類的構造函數,它接受一個值類中的每個字段。同時,SQL結果地圖將建成投入使用構造函數而不是“setter”爲每個字段。這個屬性是隻適用於MyBatis3和將被忽略了iBATIS2。這個屬性可以被相應的屬性在< table >元素。

immutable:默認爲false

不可變,此屬性用於選擇是否MyBatis生成器將產生不可變模型類——這意味着類不會有“setter”方法和構造函數會接受類中每個字段的值。

trimStrings:默認值是false。 
此屬性用於選擇是否MyBatis生成器添加代碼來修剪的白色空間從字符字段從數據庫返回的。這可以是很有用的,如果您的數據庫將數據存儲在字符字段而不是VARCHAR字段。當真正的,MyBatis生成器將插入代碼來削減字符字段。

 

<javaClientGenerator>元素是用來定義Java客戶機代碼生成器的屬性
Java客戶機生成器用來建立Java接口和類,以便可以方便地使用生成的Java模型和XML映射文件。
對於iBATIS2目標環境,這些生成的對象採用的形式DAO接口和實現類。
對於MyBatis,生成的對象採用的形式mapper接口。
type屬性:
如果targetRuntime爲MyBatis3
XMLMAPPER:生成的對象將Java接口MyBatis 3。xmapper基礎設施接口將會依賴生成的XML映射器文件。一般都是使用這個XMLMAPPER

<table>元素用於選擇數據庫中的一個表。選擇的表將導致生成以下對象爲每個表

tableName:必須配置 ,指定表的名稱
domainObjectName:生成javabean對象的基本名稱。如果未指定,MBG將自動基於表名生成。這個名字(無論是在這裏指定,或自動生成)將被用來作爲域類名和DAO類的名字。

enableInsert:是否生成插入語句。默認是true
enableSelectByPrimaryKey:是否通過主鍵生成選擇語句。不管是否有這種設置,如果該表沒有一個主鍵將不會生成。
enableUpdateByPrimaryKey:是否通過主鍵生成更新語句。如果該表沒有主鍵,不管是否設置該屬性,語句將不會生成。
enableDeleteByPrimaryKey:是否通過主鍵生成刪除語句。如果該表沒有主鍵,不管這種設置該屬性,語句將不會生成。
enableDeleteByExample:是否通過example對象生成刪除語句。這個聲明使得許多不同的動態刪除在運行時生成。
enableCountByExample:是否通過example對象生成計算行數語句。該語句將返回一個表中的行數相匹配的example。
enableUpdateByExample:是否通過example對象生成更新語句。該語句將更新一個表中相匹配的記錄。

selectByPrimaryKeyQueryId:這個值將被添加到選擇列表中選擇通過主鍵的聲明在本表格:“' <值>作爲QUERYID”。這可以用於識別查詢在DBA在運行時跟蹤工具。如果你使用這樣的價值,你應該指定一個唯一的id爲每個不同的查詢生成MBG。
selectByExampleQueryId:這個值將被添加到選擇列表中選擇通過例子的聲明在本表格:“' <值>作爲QUERYID”。這可以用於識別查詢在DBA在運行時跟蹤工具。如果你使用這樣的價值,你應該指定一個唯一的id爲每個不同的查詢生成MBG。
enableSelectByExample:是否應該生成通過example的選擇語句。這個聲明使得許多不同的動態查詢是在運行時生成。

 

MBG工具有5種方式運行,1、命令行方式,2、ant方式,3、Maven方式,4、基於xml配置的java方式,5、基於java配置的java方式。

 1、運行cmd->java - jar jar包的文件路徑  -configfile  generator.xml的文件路徑  -overwrite 命令。

如下: 

 

java -jar E:\Websoft\mybaits\mybatis-generator-core-1.3.2\lib\mybatis-generator-core-1.3.2.jar -configfile E:\WebWorkSpace\workspace_js\downAttachdemo\src\com\mochasoft\down\generator.xml -overwrite  
 成功時輸出:MyBatis Generator finished successfully.

 

2、 Java生成

 

  List<String> warnings = new ArrayList<String>();  
  boolean overwrite = true;//是否覆蓋原來的文件
  File configFile = new File("generatorConfig.xml");  
  ConfigurationParser cp = new ConfigurationParser(warnings);  
  Configuration config = cp.parseConfiguration(configFile);  
  DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
  MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
  myBatisGenerator.generate(null);  
 3、ant

 

  1. <?xml version="1.0"?>  
  2.   
  3. <project default="genfiles" basedir=".">  
  4.     <path id="build">  
  5.         <fileset dir="${basedir}\web\WEB-INF\lib">  
  6.             <include name="*.jar" />  
  7.         </fileset>  
  8.     </path>  
  9.   
  10.     <property name="generated.source.dir" value="${basedir}" />  
  11.   
  12.     <target name="genfiles" description="Generate the files">  
  13.         <taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask">  
  14.             <classpath refid="build" />  
  15.         </taskdef>  
  16.         <!--configfile:填你MBG文件名  -->  
  17.         <mbgenerator overwrite="true" configfile="generatorConfig.xml" verbose="false">  
  18.             <propertyset>  
  19.                 <propertyref name="generated.source.dir" />  
  20.             </propertyset>  
  21.         </mbgenerator>  
  22.     </target>  
  23. </project>  

 

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