<com:TContent ID="body">
<h1>Mapped Statements</h1>
<p>Mapped Statements can hold any SQL statement and can use Parameter Maps and
Result Maps for input and output. (A stored procedure is a specialized form of
a statement. </p>
<p>If the case is simple, the Mapped Statement can reference the parameter and
result classes directly. Mapped Statements support caching through reference
to a Cache Model element. The following example shows the syntax for a
statement element.</p>
<com:TTextHighlighter Language="xml" CssClass="source">
<statement id="statement.name"
[parameterMap="parameterMap.name"]
[parameterClass="class.name"]
[resultMap="resultMap.name"]
[resultClass="class.name"]
[listClass="class.name"]
[cacheModel="cache.name"]
>
select * from Products where Product_Id = [?|#propertyName#]
order by [$simpleDynamic$]
</statement>
</com:TTextHighlighter>
<p>The <tt>[bracketed]</tt> parts are optional, and some
options are mutually exclusive. It is perfectly legal to have a Mapped
Statement as simple as shown by the following example.</p>
<com:TTextHighlighter Language="xml" CssClass="source">
<statement id="InsertTestProduct" >
insert into Products (Product_Id, Product_Description) values (1, "Shih Tzu")
</statement>
</com:TTextHighlighter>
<p>The above example is obviously unlikely, unless you are running a
test. But it does shows that you can use SQLMap to execute arbitrary SQL
statements. More likely, you will use the object mapping features with
<a href="?page=Manual.ParameterMap">Parameter Maps</a> and
<a href="?page=Manual.ResultMaps">Result Maps</a> since that's where the magic happens.</p>
<h2>Statement Types</h2>
<p>The <tt><statement></tt> element is a general "catch all" element that can be
used for any type of SQL statement. Generally it is a good idea to use one of
the more specific statement-type elements. The more specific elements provided
better error-checking and even more functionality. (For example, the insert
statement can return a database-generated key.) The following table
summarizes the statement-type elements and their supported attributes and
features. </p>
<!-- tabular: align=|l|l|l|l|, width=(0.2 0.2 0.2 0.2) -->
<table class="tabular">
<tr>
<th>Statement Element</th>
<th>Attribute</th>
<th>Child Elements</th>
<th>Methods</th>
</tr>
<tr>
<td><tt><statement></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>resultClass</tt><br />
<tt>listClass</tt><br />
<tt>parameterMap</tt><br />
<tt>resultMap</tt><br />
<tt>cacheModel</tt>
</td>
<td>None</td>
<td>
<tt>Insert</tt><br />
<tt>Update</tt><br />
<tt>Delete</tt><br />
All query methods
</td>
</tr>
<tr>
<td><tt><insert></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>parameterMap</tt>
</td>
<td>
<tt><selectKey></tt><br />
<tt><generate></tt>
</td>
<td>
<tt>Insert</tt><br />
<tt>Update</tt><br />
<tt>Delete</tt>
</td>
</tr>
<tr>
<td><tt><update></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>parameterMap</tt><br />
<tt>extends</tt>
</td>
<td><tt><generate></tt></td>
<td>
<tt>Insert</tt><br />
<tt>Update</tt><br />
<tt>Delete</tt>
</td>
</tr>
<tr>
<td><tt><delete></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>parameterMap</tt><br />
<tt>extends</tt>
</td>
<td><tt><generate></tt></td>
<td>
<tt>Insert</tt><br />
<tt>Update</tt><br />
<tt>Delete</tt>
</td>
</tr>
<tr>
<td><tt><select></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>resultClass</tt><br />
<tt>listClass</tt><br />
<tt>parameterMap</tt><br />
<tt>resultMap</tt><br />
<tt>cacheModel</tt><br />
<tt>extends</tt>
</td>
<td><tt><generate></tt></td>
<td>
All query methods
</td>
</tr>
<tr>
<td><tt><procedure></tt></td>
<td>
<tt>id</tt><br />
<tt>parameterClass</tt><br />
<tt>resultClass</tt><br />
<tt>listClass</tt><br />
<tt>parameterMap</tt><br />
<tt>resultMap</tt><br />
<tt>cacheModel</tt>
</td>
<td>None</td>
<td>
<tt>Insert</tt><br />
<tt>Update</tt><br />
<tt>Delete</tt><br />
All query methods
</td>
</tr>
</table>
<h2>Stored Procedures</h2>
<p>TODO</p>
</com:TContent>