Velocity学习笔记
代码样例
Velocity宏样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#macro( finHead $head ) #set( $params = $springCtx.getBean('appConfig').params ) <HEAD> <VER>${params.version}</VER> <SRC>${params.srcNode}</SRC> <DES>${params.destNode}</DES> <APP>${params.appName}</APP> <MsgNo>$head.msgNo</MsgNo> <MsgNoOld>$!{head.msgNoOld}</MsgNoOld> <MsgID>$head.msgId</MsgID> <MsgRef>$head.msgRef</MsgRef> <WorkDate>$head.workDate</WorkDate> <Reserve></Reserve> </HEAD> #end |
一个比较复杂的实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> #foreach($em in $ems) ##循环处理所有实体映射定义 <class entity-name="$em.name" #if($em.node) node="$em.node" #end table="$em.table"> #set($pms = $em.allPropertyMappings) #foreach($pm in $pms) #if($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.IdPropertyMapping")) ##标识符属性 #set($idElName = "id") #if($pm.composite) #set($idElName = "composite-id") #end <$idElName name="$pm.name" #if($pm.node) node="$pm.node" #end #if(not $pm.composite) type="$pm.uniqueKeyMapping.type" #end> #set($kms = $pm.keyMappings) #foreach($km in $kms) #if($pm.composite) <key-property name="$km.name" #if($km.node) node="$km.node" #end type="$km.type" column="$km.column" /> #else <column name="$km.column"/> #end #end <generator class="assigned" /> </$idElName> #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.SimplePropertyMapping")) ##简单属性 <property name="$pm.name" #if($pm.node) node="$pm.node" #end type="$pm.type" column="$pm.column" /> #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.O2MPropertyMapping")) ##一对多引用 <set name="$pm.name" #if($pm.node) node="$pm.node" #end cascade="all" fetch="join" lazy="false"> <key> #set($kms = $pm.keyMappings) #foreach($km in $kms) <column name="$km.column"/> #end </key> <one-to-many entity-name="$pm.refEntityMapping.name"/> </set> #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.M2OPropertyMapping")) ##多对一引用 <many-to-one name="$pm.name" #if($pm.node) node="$pm.node" #end entity-name="$pm.refEntityMapping.name" cascade="all" fetch="join" lazy="false"> #set($kms = $pm.keyMappings) #foreach($km in $kms) <column name="$km.column"/> #end </many-to-one> #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.M2MPropertyMapping")) ##多对多引用(join-table based) <set name="$pm.name" #if($pm.node) node="$pm.node" #end table="$pm.joinTable" cascade="all" fetch="join" lazy="false"> <key> #set($kms = $pm.keyMappings) #foreach($km in $kms) <column name="$km.column"/> #end </key> <many-to-many entity-name="$pm.refEntityMapping.name"> #set($okms = $pm.oppoKeyMappings) #foreach($okm in $okms) <column name="$okm.column"/> #end </many-to-many> </set> #end #end </class> #end </hibernate-mapping> |
18 years ago
0
Oracle数据库知识集锦
基本概念
- 专用|共享服务器模式:区别:专用模式下,一个用户连接进程对应一个服务器的进程
- 会话与连接的关系: 一个物理TCP/IP连接上可以有多个会话; 会话可以失去物理连接(可以重新关联到物理连接?); JDBC中的connection,对应了Oracle的会话,而非物理连接。默认情况下,断开连接后,会话的状态可能处理INACTIVE,…
18 years ago
0
状态模式
模式定义
状态模式允许对象在内部状态改变时改变其行为,并且,此改变对于客户端透明。状态模式将不同状态下的对象行为进行解耦。该模式在GOF95中被分类为行为模式。
模式结构与说明
- Context 是一个类,它可以拥有一些内部状态,这些状态使用 State 接口表示
- 不管何时,Client调用 Context.request() 方法时,Context都将该调用委托给 State 对象处理
- 规定了所有具体状态的公共接口,这样确保了状态之间可以互相替换
- 都提供了它自己对于请求处理的实现
- 的状态发生改变,单这需要前者持有后者的引用
需要注意的是, 对象包含的方法数量取决于状态机支持的操作的数量,具体状态的数量则取决于状态机包含的状态的数量。
状态转换可能由 中完成状态转换。状态转换绝不会有客户代码驱动。
状态模式的优点:
- 简化应用逻辑控制,避免了庞大的if-else结构
- 更好的分离了状态与行为
状态模式的缺点:
- 由于每个状态引入一个 ,可能导致程序中出现太多的状态类,显得混乱
- 违反了OCP,当…
18 years ago
0