guzz.xml为guzz框架的核心配置文件,用于定义应用配置,数据库使用,ORM,以及服务等。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE guzz-configs PUBLIC "-//GUZZ//DTD MAIN CONFIG//EN" "http://guzz.xiu666.com/dtd/guzz.dtd"> <guzz-configs> <config-server> <server class="org.guzz.config.LocalFileConfigServer"> <param name="resource" value="guzz_app.properties" /> </server> </config-server> <dialect class="org.guzz.dialect.H2Dialect" /> <tran> <dbgroup name="default" masterDBConfigName="masterDB" /> <dbgroup name="updateDB" masterDBConfigName="updateMasterDB" /> <dbgroup name="logDB" masterDBConfigName="updateMasterDB" /> </tran> <business name="guzzSlowUpdate" dbgroup="updateDB" file="classpath:org/guzz/service/core/IncUpdateBusiness.hbm.xml" /> <business name="user" file="classpath:org/guzz/test/User.hbm.xml" /> <business name="article" file="classpath:org/guzz/test/Article.hbm.xml" /> <business name="articleCount" file="classpath:org/guzz/test/ArticleCount.hbm.xml" /> <business dbgroup="updateDB" name="guzzSlowUpdate" file="classpath:org/guzz/service/core/impl/IncUpdateBusiness.hbm.xml" /> <business dbgroup="logDB" name="systemLog" file="classpath:com/mycompany/myapp/business/SystemLog.hbm.xml" /> <service name="logService" configName="guzzDBLogServiceClient" class="org.guzz.service.log.impl.DBLogServiceImpl" /> <service name="slowUpdateServer" configName="guzzSlowUpdateServer" class="org.guzz.service.db.impl.SlowUpdateServerImpl" /> <sqlMap dbgroup="user"> <select id="selectUser" orm="user"> select * from @@user where @id = :id </select> <update id="updateUserFavCount" orm="userObjectMap"> update @@user set @favCount = favCount + 1 </update> <select id="selectUsers" orm="userObjectMap"> select @id, @name, @vip, @favCount from @@user </select> <orm id="userObjectMap" class="org.guzz.test.UserModel" dbgroup="user"> <result property="id" column="pk" type="int" /> <result property="name" column="userName"/> <result property="favCount" column="FAV_COUNT"/> <result property="vip" column="VIP_USER"/> </orm> </sqlMap> </guzz-configs>
其中:
config-server :指定配置服务器实现,guzz通过配置服务器读取应用的配置文件。默认实现为本地文件配置,通过读取guzz_app.properties加载配置信息。
guzz_app.properties: 为应用配置文件,按照组进行设置。类似于Mysql数据库的配置文件,在下一节进行详细介绍。
dialect :指定数据库的实现。目前dialect主要用来创建主键,以及进行物理分页查询。dialect可以指定1个名称,默认为default。
tran :定义数据库组,1个tran下可以有多个 dbgroup, 每个dbgroup可以指定主数据库配置名和从数据库配置名,以及dialect名(默认用default)。guzz通过配置名,从配置服务器中查询配 置,默认实现为从guzz_app.properties读取此组名的配置信息。
business :定于领域对象。1个领域对象对应数据库中的一张表。领域对象必须指定一个名字name属性(以后称为 businessName),这个名字以后可以用来代替类名查询对象,以及在jsp taglib中标示读取什么对象。business可以指定dbgroup属性,标示对象存储在那1组数据库中,默认为default组。file属性制 定hbm.xml文件位置。business可以指定interpret属性进行高级的taglib标签条件控制,interpret为实现 org.guzz.orm.BusinessInterpreter接口的完整类名。
service :用于外挂系统服务。name为服务名称,在程序中可以通过name查询到服务实例;configName为配置信息组名称,class为服务实现客户端。service必须实现org.guzz.Service 接口。
sqlMap :定义sql语句以及sql映射,类似于ibatis。sqlMap可以指定dbgroup属性标记此sqlMap下所有查询对应的数据库组。
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方式)。
orm :定义sql查询结果字段与对象的对应关系,类似ibatis。可以通过指定dbgroup覆盖sqlMap中设定的数据库。 orm可以放在sqlMap内,表示此ORM在本sqlmap内有效,也可以放在sqlMap外,表示所有sqlMap中的select/update都 可以使用。
orm/result :每1个Result代表一列的对应关系,property为java属性名,column为数据库属性,type为数据类型(与hbm.xml中的type含义和取值相同);如果type没有指定,则通过orm/class按照property属性反射获取类型。