配置guzz.xml

核心配置

guzz.xml为guzz框架的核心配置文件,用于定义应用配置,数据库使用,ORM,以及服务等。

guzz.xml样本:

 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>

其中:

config-server:指定应用配置信息管理服务。guzz通过配置服务器读取应用的各项配置参数。默认实现为本地文件配置,本例中通过读取guzz_app.properties加载配置信息。

guzz_app.properties: 为应用配置文件,按照组进行设置。类似于Mysql数据库的配置文件,在下一节进行详细介绍。本例中为向org.guzz.config.LocalFileConfigServer配置管理服务器传入的参数。

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个整体来解析。

service:用于外挂系统服务。name为服务名称,在程序中可以通过name查询到服务实例;configName为配置信息组名称,class为服务实现客户端。class必须实现org.guzz.Service接口。

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 8iorg.guzz.dialect.Oracle8iDialect-
Oracle 9iorg.guzz.dialect.Oracle9iDialect-
Oracle 10gorg.guzz.dialect.Oracle10gDialect-
H2 Databaseorg.guzz.dialect.H2Dialect-
Microsoft SQL Server 2000+org.guzz.dialect.MSSQLDialect不支持分页查询。未测试。

 

guzz支持的数据类型

 

数据库数据库数据类型guzz中type取值Java类型含义
所有intintint整数
所有stringstringjava.lang.String字符型
所有varcharstringjava.lang.String字符型
所有nvarcharstringjava.lang.String字符型
所有charstringjava.lang.String字符型
所有ncharstringjava.lang.String字符型
所有textstringjava.lang.String字符型
所有datetimedatetimejava.util.Date或java.sql.Timestamp时间戳,包含日期和时间
所有timestampdatetimejava.util.Date或java.sql.Timestamp时间戳,包含日期和时间
所有datedatejava.util.Date或java.sql.Date日期
所有timetimejava.util.Date或java.sql.Time时间
所有boolbooleanboolean布尔型
所有booleanbooleanboolean布尔型
所有bigintbigintlong长整型
所有longbigintlong长整型
所有doubledoubledouble长浮点型
所有moneydecimaljava.math.BigDecimal货币类型
所有decimaldecimaljava.math.BigDecimal货币类型
所有floatfloatfloat浮点型
所有shortshortshort短整型
所有smallintshortshort短整型
所有tinyintshortshort短整型
所有bytebytebyte字节
所有bitbytebyte字节
所有bytesbytesbyte[]字节数组
所有binarybytesbyte[]字节数组
所有varbinarybytesbyte[]字节数组
所有clobcloborg.guzz.pojo.lob.TranClob大字符
所有blobbloborg.guzz.pojo.lob.TranBlob大二进制
所有intenum.ordinal|enum.class.fullnameenum类java枚举类型。数据库中为整数定义,enum.class.fullname为枚举类的完整类名。
所有varcharenum.string|enum.class.fullnameenum类java枚举类型。数据库中为字符定义,enum.class.fullname为枚举类的完整类名。
Microsoft SQL Serverimagebytesbyte[]字节数组
Microsoft SQL Servervarbinarybytesbyte[]字节数组
Oracle8i+oracle long类型Oracle.Longjava.lang.Stringstring字符型
Oracle8i+varchar2stringjava.lang.String字符型
Oracle8i+nclobcloborg.guzz.pojo.lob.TranClob大字符
Oracle8i+rawbytesbyte[]字节数组

转载于:https://www.cnblogs.com/SuperBing/p/4962883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值