<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>绿色记忆 &#187; Velocity</title>
	<atom:link href="https://blog.gmem.cc/tag/velocity/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.gmem.cc</link>
	<description></description>
	<lastBuildDate>Mon, 06 Apr 2026 02:15:06 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.14</generator>
	<item>
		<title>Velocity学习笔记</title>
		<link>https://blog.gmem.cc/velocity-study-note</link>
		<comments>https://blog.gmem.cc/velocity-study-note#comments</comments>
		<pubDate>Wed, 16 May 2007 03:03:13 +0000</pubDate>
		<dc:creator><![CDATA[Alex]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Velocity]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://blog.gmem.cc/?p=1214</guid>
		<description><![CDATA[<p>代码样例 Velocity宏样例 [crayon-69d36c0ac1a72739441136/] 一个比较复杂的实例 [crayon-69d36c0ac1a79884983798/]</p>
<p>The post <a rel="nofollow" href="https://blog.gmem.cc/velocity-study-note">Velocity学习笔记</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="wri_content_clear_both"><div class="blog_h2"><span class="graybg">代码样例</span></div>
<div class="blog_h3"><span class="graybg">Velocity宏样例</span></div>
<pre class="crayon-plain-tag">#macro( finHead $head )
#set( $params = $springCtx.getBean('appConfig').params )
&lt;HEAD&gt;
	&lt;VER&gt;${params.version}&lt;/VER&gt;
	&lt;SRC&gt;${params.srcNode}&lt;/SRC&gt;
	&lt;DES&gt;${params.destNode}&lt;/DES&gt;
	&lt;APP&gt;${params.appName}&lt;/APP&gt;
	&lt;MsgNo&gt;$head.msgNo&lt;/MsgNo&gt;
	&lt;MsgNoOld&gt;$!{head.msgNoOld}&lt;/MsgNoOld&gt;
	&lt;MsgID&gt;$head.msgId&lt;/MsgID&gt;
	&lt;MsgRef&gt;$head.msgRef&lt;/MsgRef&gt;
	&lt;WorkDate&gt;$head.workDate&lt;/WorkDate&gt;
	&lt;Reserve&gt;&lt;/Reserve&gt;
&lt;/HEAD&gt;
#end </pre>
<div class="blog_h3"><span class="graybg">一个比较复杂的实例</span></div>
<pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" &gt;
&lt;hibernate-mapping&gt;
    #foreach($em in $ems)
        ##循环处理所有实体映射定义
        &lt;class entity-name="$em.name"  #if($em.node) node="$em.node" #end table="$em.table"&gt;
            #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
                    &lt;$idElName name="$pm.name" #if($pm.node) node="$pm.node" #end #if(not $pm.composite) type="$pm.uniqueKeyMapping.type" #end&gt;
                        #set($kms = $pm.keyMappings)
                        #foreach($km in $kms)
                            #if($pm.composite)
                                &lt;key-property name="$km.name" #if($km.node) node="$km.node" #end type="$km.type" column="$km.column" /&gt;
                            #else
                                &lt;column name="$km.column"/&gt;
                            #end
                        #end
                        &lt;generator class="assigned" /&gt;
                    &lt;/$idElName&gt;
                #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.SimplePropertyMapping"))
                    ##简单属性
                    &lt;property name="$pm.name" #if($pm.node) node="$pm.node" #end type="$pm.type" column="$pm.column" /&gt;
                #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.O2MPropertyMapping"))
                    ##一对多引用
                    &lt;set name="$pm.name" #if($pm.node) node="$pm.node" #end cascade="all" fetch="join" lazy="false"&gt;
                        &lt;key&gt;
                            #set($kms = $pm.keyMappings)
                            #foreach($km in $kms)
                                &lt;column name="$km.column"/&gt;
                            #end
                        &lt;/key&gt;
                        &lt;one-to-many entity-name="$pm.refEntityMapping.name"/&gt;
                    &lt;/set&gt;
                #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.M2OPropertyMapping"))
                    ##多对一引用
                    &lt;many-to-one name="$pm.name" #if($pm.node) node="$pm.node" #end entity-name="$pm.refEntityMapping.name" cascade="all" fetch="join" lazy="false"&gt;
                        #set($kms = $pm.keyMappings)
                        #foreach($km in $kms)
                            &lt;column name="$km.column"/&gt;
                        #end
                    &lt;/many-to-one&gt;
                #elseif($helper.instanceOf($pm,"sparknet.canary.core.mapping.model.M2MPropertyMapping"))
                    ##多对多引用(join-table based)
                    &lt;set name="$pm.name" #if($pm.node) node="$pm.node" #end table="$pm.joinTable" cascade="all" fetch="join" lazy="false"&gt;
                        &lt;key&gt;
                            #set($kms = $pm.keyMappings)
                            #foreach($km in $kms)
                                &lt;column name="$km.column"/&gt;
                            #end
                        &lt;/key&gt;
                        &lt;many-to-many entity-name="$pm.refEntityMapping.name"&gt;
                            #set($okms = $pm.oppoKeyMappings)
                            #foreach($okm in $okms)
                                &lt;column name="$okm.column"/&gt;
                            #end
                        &lt;/many-to-many&gt;
                    &lt;/set&gt;
                #end
            #end
        &lt;/class&gt;
    #end
&lt;/hibernate-mapping&gt;</pre>
</div><p>The post <a rel="nofollow" href="https://blog.gmem.cc/velocity-study-note">Velocity学习笔记</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.gmem.cc/velocity-study-note/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
