配置guzz.xml

核心配置

guzz.xml爲guzz框架的核心配置文件,用於定義應用配置,數據庫使用,ORM,以及服務等。

guzz.xml樣本:java

 1 <guzz-configs>
 2         
 3         <config-server>
 4                 <server class="org.guzz.config.LocalFileConfigServer">
 5                         <param name="resource" value="guzz_app.properties" />
 6                 </server>
 7         </config-server>
 8 
 9         <dialect class="org.guzz.dialect.H2Dialect"></dialect>
10         <dialect name="mysql5dialect" class="org.guzz.dialect.Mysql5Dialect" />
11         <dialect name="oracle10gdialect" class="org.guzz.dialect.Oracle10gDialect" />
12         
13         <tran>
14                 <dbgroup name="default" masterDBConfigName="masterDB" />
15                 <dbgroup name="log" masterDBConfigName="masterDB" dialectName="mysql5dialect" />
16                 <dbgroup name="oracle" masterDBConfigName="oracleDB" dialectName="oracle10gdialect" />
17         </tran> 
18         
19         <import resource="include/part2.xml" />
20 
21         <business name="user" dbgroup="default" class="org.guzz.test.User" interpret="" file="classpath:org/guzz/test/User.hbm.xml" />
22         <business name="book" class="org.guzz.test.Book" file="classpath:org/guzz/test/Book.hbm.xml" />
23         <business name="userInfo" dbgroup="oracle" class="org.guzz.test.UserInfo" file="classpath:org/guzz/test/UserInfo.hbm.xml" />
24         <business name="userInfo2" dbgroup="default" file="classpath:org/guzz/test/UserInfoH2.hbm.xml" />
25         <business name="comment" dbgroup="default" file="classpath:org/guzz/test/Comment.hbm.xml" />
26         <business name="cargo" dbgroup="default" file="classpath:org/guzz/test/shop/Cargo.hbm.xml" />
27         <business name="sp" dbgroup="default" file="classpath:org/guzz/test/shop/SpecialProperty.hbm.xml" />
28 
29         <service name="onlyForTest" configName="onlyForTestConfig" class="org.guzz.test.sample.SampleTestService" />
30         <service name="onlyForTest2" configName="onlyForTest2Config" class="org.guzz.test.sample.SampleTestService2" />
31         
32         <sqlMap dbgroup="default">
33                 <select id="selectUser" orm="user" dbgroup="default">
34                         select * from @@user
35                          where 
36                                 @id = :id and @status = :checked
37                         <paramsMapping>
38                                 <map paramName="userName" propName="userName" />
39                                 <map paramName="checked" type="int" />
40                         </paramsMapping>
41                 </select>
42                 
43                 <select id="selectUserByName" orm="user">
44                         select id, userName, vip, password from tb_user where userName = :userName
45                 </select>
46         
47                 <update id="updateUserFavCount" orm="userObjectMap">
48                         update @@user set @favCount = favCount + 1
49                 </update>
50                 
51                 <select id="selectUsers" orm="userObjectMap">
52                         select @id, @name, @vip, @favCount from @@user
53                 </select>
54                 
55                 <select id="listCommentsByName" orm="commentMap">
56                         select * from @@commentMap where @userName = :userName
57                 </select>
58                                 
59                 <orm id="userObjectMap" class="org.guzz.test.UserModel">
60                         <result property="id" column="pk"/>
61                     <result property="name" column="userName"/>
62                     <result property="favCount" column="FAV_COUNT"/>
63                     <result property="vip" column="VIP_USER"/>
64                 </orm>
65                 
66                 <orm id="commentMap" class="org.guzz.test.Comment" table="TB_COMMENT" shadow="org.guzz.test.CommentShadowView">
67                         <result property="id" column="id" type="int"/>
68                     <result property="userId" column="userId" type="int"/>
69                     <result property="userName" column="userName" type="string" />
70                     <result property="createdTime" column="createdTime" type="datetime" />
71                 </orm>
72         </sqlMap>
73 
74 </guzz-configs>

其中:mysql

config-server:指定應用配置信息管理服務。guzz經過配置服務器讀取應用的各項配置參數。默認實現爲本地文件配置,本例中經過讀取guzz_app.properties加載配置信息。c++

guzz_app.properties: 爲應用配置文件,按照組進行設置。相似於Mysql數據庫的配置文件,在下一節進行詳細介紹。本例中爲向org.guzz.config.LocalFileConfigServer配置管理服務器傳入的參數。sql

dialect:指定數據庫的實現方言。目前dialect主要用來建立主鍵,以及進行物理分頁查詢。dialect能夠指定1個名稱,默認爲default。guzz容許一次管理多組不一樣類型的數據庫,dialect能夠配置多個。數據庫

tran:定義數據庫組,1個tran下能夠有多個 dbgroup,每一個dbgroup能夠指定主數據庫配置名和從數據庫配置名,以及dialect名(默認用default)。guzz經過配置名,從配置服務器中查詢配置,本例中就是從guzz_app.properties讀取此組名的配置信息。每一個dbgroup對應1個物理的數據庫組,能夠有主庫從庫之分,也能夠經過不一樣的dialect名稱設置不一樣類型的數據庫廠商,默認的dialect名稱爲default。數組

business:定於領域對象。1個領域對象對應數據庫中的一張表。領域對象必須指定一個名字name屬性(之後稱爲 businessName),這個名字之後能夠用來代替類名查詢對象,以及在jsp taglib中標示讀取什麼對象。business能夠指定dbgroup屬性,標示對象存儲在那一組數據庫中,默認爲default組。file屬性制定hbm.xml文件位置。business能夠指定interpret屬性進行高級的taglib標籤條件控制,interpret爲實現 org.guzz.orm.BusinessInterpreter接口的完整類名,也能夠指定class屬性覆蓋hbm.xml中設定的class。服務器

import:引入一個子配置文件,經過resource屬性指定配置文件相對當前文件的位置。import工做時至關於彙編的宏或者c++的inline函數,他copy子文件的配置內容合併到import的位置,而後再按照1個總體來解析。oracle

service:用於外掛系統服務。name爲服務名稱,在程序中能夠經過name查詢到服務實例;configName爲配置信息組名稱,class爲服務實現客戶端。class必須實現org.guzz.Service接口。app

sqlMap:定義sql語句以及sql映射,相似於ibatis。sqlMap能夠指定dbgroup屬性標記此sqlMap下全部查詢對應的數據庫組,默認爲default數據庫組。框架

sqlMap/select|update:定義sql查詢和更新|刪除語句,經過id指定名稱(在程序中使用的名稱),經過orm 屬性指定要Mapping的配置。sql語句爲可在數據庫中執行的標準sql語句。在編寫sql語句時,爲了方便記憶,能夠用@@businessName或者@@full-class-name的方式代替數據庫表名,用@java屬性名稱或者@orm/result/property 名稱代替對應的數據庫字段,guzz在執行時會完成自動替換;固然也能夠不用。

若是sql中包含參數,使用「冒號+參數名稱」代替,如「:userName」,在程序中執行時經過java.util.Map傳入"userName"->value對進行調用,guzz將完成命名參數的參數設置(PreparedStatement方式)。
參數設置時,須要肯定參數的數據類型。默認狀況下,數據類型由JDBC驅動自動檢測與匹配(可能會不許確),用戶也能夠本身定義參數的數據類型(建議方式)。設置方法是將參數與映射後對象的屬性名稱作映射,guzz將按照java屬性的類型對待參數類型。定義方法爲在select/update中增長paramsMapping/map配置,如上面示例中id爲selectUser的sql配置。map接受3個參數,paramName爲參數名稱,必須填寫;propName爲參數對應的java屬性名稱,type爲數據類型,相似hbm.xml中定義屬性的type屬性。propName和type必須設定1個,用於肯定paramName的數據類型。作完映射後,guzz支持自動把字符串類型轉爲須要的類型,在使用動態SQL須要自動傳入與解析不肯定的參數時,很是有用。
select|update的orm屬性值能夠是本文件中定義的orm元素的值,也能夠是領域對象的businessName(直接使用hbm.xml或者annotation定義的映射)。orm映射默認將結果轉會成領域對象,用戶也能夠經過配置result-class自定義轉換成的java對象。result-class能夠是javabean類或Map類,如...result-class="org.guzz.SomeBeanForm",或result-class="java.util.HashMap"。
select|update的templated屬性用於開啓模板化SQL,也就是根據參數動態的解析和組裝sql語句。具體請參看  TemplatedSQL

orm:定義sql查詢結果字段與對象的對應關係,相似ibatis。能夠經過指定dbgroup覆蓋sqlMap中設定的數據庫。 orm能夠放在sqlMap內,表示此ORM在本sqlmap內有效,也能夠放在sqlMap外,表示全部sqlMap中的select/update均可以使用。放在sqlMap內的orm優先級高於放在sqlMap的,同時orm名稱不能是business name,全部business name會按照本身的名字自動聲明本身爲一個全局的orm。所以,在配置的sql語句選擇orm時,能夠填寫爲business name使用hbm.xml的映射關係(hbm.xml中全部的特殊功能,包括表分切自定義屬性延遲加載等將依然有效),但此時將查詢結果轉換成java對象時採用hibernate的規則,查詢多少字段映射多少字段,沒有select的屬性設爲默認值。

orm/result:每1個Result表明一列的對應關係,property爲java屬性名,column爲數據庫屬性,type爲數據類型(與hbm.xml中的type含義和取值相同);若是type沒有指定,則經過orm/class按照property屬性反射獲取類型。

sql語句中特殊字符轉義

在sql語句中,某些特殊的字符爲sql語句保留或是guzz保留。若是這些字符僅僅是參數值的一部分,在拼接成sql語句中時,須要進行轉義。

須要轉義的字符有

特殊字符 轉義寫法
: \:
@ \@
' \'
\ \\
" \"

 

舉例來講:

1 select * from @@article where @title=:title and @createdTime > to_date('20110101 0\:0\:0', 'YYYYMMDD HH24\:MI\:SS')

在上面的例子中,時間值包含「:」,則須要進行轉義;不然guzz將把「:」後的內容看成命名參數處理,引起錯誤。

注意: 若是參數值經過命名參數傳入,特殊字符也不須要轉義。轉義僅適用於直接的sql拼接。

guzz支持的數據庫和dialect

 

數據庫 dialect 備註
Mysql 5.0+ org.guzz.dialect.Mysql5Dialect 估計老版本的也支持,沒有測試過
Oracle 8i org.guzz.dialect.Oracle8iDialect -
Oracle 9i org.guzz.dialect.Oracle9iDialect -
Oracle 10g org.guzz.dialect.Oracle10gDialect -
H2 Database org.guzz.dialect.H2Dialect -
Microsoft SQL Server 2000+ org.guzz.dialect.MSSQLDialect 不支持分頁查詢。未測試。

 

guzz支持的數據類型

 

數據庫 數據庫數據類型 guzz中type取值 Java類型 含義
全部 int int int 整數
全部 string string java.lang.String 字符型
全部 varchar string java.lang.String 字符型
全部 nvarchar string java.lang.String 字符型
全部 char string java.lang.String 字符型
全部 nchar string java.lang.String 字符型
全部 text string java.lang.String 字符型
全部 datetime datetime java.util.Date或java.sql.Timestamp 時間戳,包含日期和時間
全部 timestamp datetime java.util.Date或java.sql.Timestamp 時間戳,包含日期和時間
全部 date date java.util.Date或java.sql.Date 日期
全部 time time java.util.Date或java.sql.Time 時間
全部 bool boolean boolean 布爾型
全部 boolean boolean boolean 布爾型
全部 bigint bigint long 長整型
全部 long bigint long 長整型
全部 double double double 長浮點型
全部 money decimal java.math.BigDecimal 貨幣類型
全部 decimal decimal java.math.BigDecimal 貨幣類型
全部 float float float 浮點型
全部 short short short 短整型
全部 smallint short short 短整型
全部 tinyint short short 短整型
全部 byte byte byte 字節
全部 bit byte byte 字節
全部 bytes bytes byte[] 字節數組
全部 binary bytes byte[] 字節數組
全部 varbinary bytes byte[] 字節數組
全部 clob clob org.guzz.pojo.lob.TranClob 大字符
全部 blob blob org.guzz.pojo.lob.TranBlob 大二進制
全部 int enum.ordinal|enum.class.fullname enum類 java枚舉類型。數據庫中爲整數定義,enum.class.fullname爲枚舉類的完整類名。
全部 varchar enum.string|enum.class.fullname enum類 java枚舉類型。數據庫中爲字符定義,enum.class.fullname爲枚舉類的完整類名。
Microsoft SQL Server image bytes byte[] 字節數組
Microsoft SQL Server varbinary bytes byte[] 字節數組
Oracle8i+ oracle long類型 Oracle.Long java.lang.String string字符型
Oracle8i+ varchar2 string java.lang.String 字符型
Oracle8i+ nclob clob org.guzz.pojo.lob.TranClob 大字符
Oracle8i+ raw bytes byte[] 字節數組
相關文章
相關標籤/搜索