Blame | Letzte Änderung | Log anzeigen | RSS feed
<com:TContent ID="body"><h1>Inline Parameter Maps</h1><p>If you prefer to use inline parameters instead of parameter maps, you can addextra type information inline too. The inline parameter map syntax lets youembed the property name, the property type, the column type, and a null valuereplacement into a parametrized SQL statement. The next four examples showsstatements written with inline parameters.</p><com:TTextHighlighter Language="xml" CssClass="source"><statement id="insertProduct" parameterClass="Product">insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)values (#id#, #description#)</statement></com:TTextHighlighter><p>The following example shows how <tt>dbTypes</tt> can be declared inline.</p><com:TTextHighlighter Language="xml" CssClass="source"><statement id="insertProduct" parameterClass="Product">insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)values (#id, dbType=int#, #description, dbType=VarChar#)</statement></com:TTextHighlighter><p>The next example shows how <tt>dbTypes</tt> and null value replacements can alsobe declared inline.</p><com:TTextHighlighter Language="xml" CssClass="source"><statement id="insertProduct" parameterClass="Product">insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)values (#id, dbType=int, nullValue=-999999#, #description, dbType=VarChar#)</statement></com:TTextHighlighter><p>A more complete example.</p><com:TTextHighlighter Language="xml" CssClass="source"><update id="UpdateAccountViaInlineParameters" parameterClass="Account">update Accounts setAccount_FirstName = #FirstName#,Account_LastName = #LastName#,Account_Email = #EmailAddress,type=string,dbType=Varchar,nullValue=no_email@provided.com#whereAccount_ID = #Id#</update></com:TTextHighlighter><div class="note"><b class="tip">Note:</b>Inline parameter maps are handy for small jobs, but when there are a lot oftype descriptors and null value replacements in a complex statement, anindustrial-strength, external <tt>parameterMap</tt> can be easier.</div><h1>Standard Type Parameters</h1><p>In practice, you will find that many statements take a single parameter, oftenan <tt>integer</tt> or a <tt>string</tt>. Rather than wrap a single value in anotherobject, you can use the standard library object (string, integer, et cetera)as the parameter directly. The following example shows a statement usinga standard type parameter.</p><com:TTextHighlighter Language="xml" CssClass="source"><statement id="getProduct" parameterClass="System.Int32">select * from PRODUCT where PRD_ID = #value#</statement></com:TTextHighlighter><p>Assuming <tt>PRD_ID</tt> is a numeric type, when a call is made to this MappedStatement, a standard integer can be passed in. The <tt>#value#</tt> parameterwill be replaced with the value of the integer. The name <tt>value</tt> is simplya placeholder, you can use another moniker of your choice. Result Maps supportprimitive types as results as well.</p><p>For your convenience, the following PHP primitive types are supported.</p><ul><li><tt>string</tt></li><li><tt>float</tt> or <tt>double</tt></li><li><tt>integer</tt> or <tt>int</tt></li><li><tt>bool</tt> or <tt>boolean</tt></li></ul><h1>Array Type Parameters</h1><p>You can also pass in a array as a parameter object. This would usually be a anassociative array. The following example shows a <tt><statement></tt> usingan array for a <tt>parameterClass</tt>.</p><com:TTextHighlighter Language="xml" CssClass="source"><statement id="getProduct" parameterClass="array">select * from PRODUCTwhere PRD_CAT_ID = #catId#and PRD_CODE = #code#</statement></com:TTextHighlighter><p>In the above example, notice that the SQL in this Mapped Statementlooks like any other. There is no difference in how the inline parameters areused. If an associative array is passed, it must contain keys named <tt>catId</tt>and <tt>code</tt>. The values referenced by those keys must be of the appropriatetype for the column, just as they would be if passed from a properties object.</p></com:TContent>