|
sqlMap所包含的標(biāo)簽
<sqlMap id="Product"> <cacheModel id="productCache" type="LRU"> <flushInterval hours="24"/> <property name="size" value="1000" /> </cacheModel> <typeAlias alias="product" type="com.ibatis.example.Product" /> <parameterMap id="productParam" class="product"> <parameter property="id"/> </parameterMap> <resultMap id="productResult" class="product"> <result property="id" column="PRD_ID"/> <result property="description" column="PRD_DESCRIPTION"/> </resultMap> <select id="getProduct" parameterMap="productParam" resultMap="productResult" cacheModel="product-cache"> select * from PRODUCT where PRD_ID = ? </select> </sqlMap> The SQL Map XML File ( http://www./dtd/sql-map-config-2.dtd) 一、Mapped Statements Mapped statements可以是任何一個SQL statement,并且可以指定輸入?yún)?shù)的map和輸出結(jié)果的map。 簡單的情況下,mapped statement可以直接指定一個類來做為輸入?yún)?shù)和輸出結(jié)果參數(shù)。mapped statement也可以使用cache model在內(nèi)存中緩沖經(jīng)常使用的數(shù)據(jù)。 <statement id="statementName" [parameterClass="some.class.Name"] [resultClass="some.class.Name"] [parameterMap="nameOfParameterMap"] [resultMap="nameOfResultMap"] [cacheModel="nameOfCache"] > select * from PRODUCT where PRD_ID = [?|#propertyName#] order by [$simpleDynamic$] </statement> 在上面的statement的配置中,放在[]中的配置參數(shù)是可選的,所以下面的Mapped Statement是完全合法的。 <statement id="insertTestProduct"> insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (1, "Shih Tzu") </statement> 下面逐一介紹各個標(biāo)簽的含義以及使用方法: 1. Statement 類型 下表中列出了所有的Statement,以及他們的屬性和所支持的特征。 Statement Element Attributes Child Elements Methods <statement> id parameterClass resultClass parameterMap resultMap cacheModel xmlResultName All dynamic elements insert update delete All query methods <insert> id parameterClass parameterMap All dynamic elements <selectKey> insert update delete <update> id parameterClass parameterMap All dynamic elements insert update delete <delete> id parameterClass parameterMap All dynamic elements insert update delete <select> id parameterClass resultClass parameterMap resultMap cacheModel All dynamic elements All query methods <procedure> id parameterClass resultClass parameterMap resultMap xmlResultName All dynamic elements insert update delete All query methods <statement id="statementName" [parameterClass="some.class.Name"] [resultClass="some.class.Name"] [parameterMap="nameOfParameterMap"] [resultMap="nameOfResultMap"] [cacheModel="nameOfCache"] > select * from PRODUCT where PRD_ID = [?|#propertyName#] order by [$simpleDynamic$] </statement> 2. the SQL sql語句無疑是map中最重要的組成部分,你可以使用任何的sql語句,只要你的數(shù)據(jù)庫和JDBC驅(qū)動支持就行。你也可以使用數(shù)據(jù)庫和驅(qū)動支持的任何函數(shù)。因為你是將sql語句寫在了XML文檔中,為了區(qū)別Sql中的"<>"和XML中的"<>",在寫Sql時,可以用<![CDATA[ SQL ]]>來寫。 3. 自增 很多關(guān)系型數(shù)據(jù)庫都支持主鍵的自增,SQL Map可以通過<insert>標(biāo)簽中的<selectKey>來支持自增。預(yù)生成(如Oracle)和后生成(如Sql Server)都支持,下面是例子: <!—Oracle SEQUENCE Example --> <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product"> <selectKey resultClass="int" keyProperty="id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL </selectKey> insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#) </insert> <!— Microsoft SQL Server IDENTITY Column Example --> <insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product"> insert into PRODUCT (PRD_DESCRIPTION) values (#description#) <selectKey resultClass="int" keyProperty="id" > SELECT @@IDENTITY AS ID </selectKey> </insert> 4. 存儲過程 通過<procedure>標(biāo)簽來支持存儲過程,下面的例子顯示了如何使用帶有輸出參數(shù)的存儲過程。 <parameterMap id="swapParameters" class="map" > <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> </parameterMap> <procedure id="swapEmailAddresses" parameterMap="swapParameters" > {call swap_email_address (?, ?)} </procedure> 調(diào)用上面的存儲過程會在數(shù)據(jù)表的兩列間交換Email地址,而且在對應(yīng)的參數(shù)對象中的也會交換。記住:當(dāng)parameter mapping的mode為INOUT或OUT的時候, 你輸入的參數(shù)對象才會改變。很顯然,不變的參數(shù)對象也是不會改變的,比如說String對象。 記住:一定要使用標(biāo)準(zhǔn)的JDBC存儲過程的語法。請參見JDBC CallableStatement documentation以獲取更多信息。 本篇文章來源于 新技術(shù)天空 原文鏈接:http://www./tech/java/opensource/ibatis/2007-06-29/349998e75c13b604.html |
|
|