<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0

    < person > ?
    ???
    < id > 1 </ id >
    ???
    < firstName > Clinton </ firstName >
    ???
    < lastName > Begin </ lastName >
    ???
    < birthDate > 1900-01-01 </ birthDate >
    ???
    < weightInKilograms > 89 </ weightInKilograms >
    ???
    < heightInMeters > 1.77 </ heightInMeters > ?
    </ person >

    一、SQL MAP Statement?
    ????????一個簡單的sql map statement。它通過最簡單的方式實現了對數據庫的添加、刪除、修改。

    <? xml?version="1.0"?encoding="UTF-8" ?>
    <! DOCTYPE?sqlMap?PUBLIC?"-//iBATIS.com//DTD?SQL?Map?2.0//EN"?"http://www.ibatis.com/dtd/sql-map-2.dtd" >
    < sqlMap? namespace ="Tuser" >
    ????
    < typeAlias? alias ="tuser" ?type ="com.ibatis.pojo.TuserPO" />
    ?????
    < select? id ="getTuser" ?resultClass ="tuser" > ?
    ???????????
    <![CDATA[
    ?????????????select?id,vname?from?tuser?where?id=#value#
    ????????????
    ]]>
    ?????
    </ select > ?

    ?????
    < insert? id ="insrtTuser" ?parameterClass ="tuser" >
    ?????????
    <![CDATA[
    ?????????????insert?into?tuser?values(#id#,#vname#)
    ?????????
    ]]>
    ?????
    </ insert >
    ?????
    < update? id ="updateTuser" ?parameterClass ="tuser" >
    ?????????
    <![CDATA[
    ?????????????update?tuser?set?id=#id#?,vname=#vname#?where?id=#id#
    ?????????
    ]]> ?
    ?????
    </ update >
    ?????
    < delete? id ="deleteTuser" ? >
    ?????????
    <![CDATA[
    ?????????????delete??from?tuser?where?id=#id#
    ?????????
    ]]>
    ?????
    </ delete >
    ?????
    </ sqlMap >

    再看下面這個較復雜點的SQL Map Statement

    < 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 =”productResu????? t”? cacheModel =”product-cache”>?
    ????????? select?*?from?PRODUCT?where?PRD_ID? =???
    </select > ?
    </ sqlMap >

    對比兩個不同的定義文件,第二個的定義比較麻煩,但運行效率卻比第一個要高。因為第一個定義文件使用了Ibatis框架的自動映射特性。

    在一個Sql map XML映射擊文件可以包含多個Mapped Statement ,Parameter Map和ResultMap,但它們的名稱在該SQL Map XML文件中必須是唯一的

    Mapped Statements

    SQL Map的核心概念是Mapped Statement。Mapped Statement可以使用任意的SQL語句,并擁有parameter map(輸入)和result map(輸出)。如果是簡單情況,Mapped Statement可以使用Java類來作為parameter和result。Mapped Statement也可以使用緩存模型,在內存中緩存常用的數據。Mapped Statement的結構如下所示:
    <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 id=”insertTestProduct” >
    ??????? insert into PRODUCT (PRD_ID,??? PRD_DESCRIPTION) values (1, “Shih Tzu”)
    </statement>
    上面的例子不太可能出現,但如果只是簡單地想用SQL Map架構來執行任意地的SQL語句,這種寫法就派上用場了。但常見的用法還是通過Parameter Map和Result Map,來實現Java Bean映射的特性,這是SQL Map真正有價值的地方。
    Statements類型
    <statement>元素是個通用聲明,可以用于任何類型的SQL語句。通常,使用具體的statement類型是個好主意。具體statement類型提供了更直觀的XML DTD,并擁有某些

    Statement 類型

    屬性

    子元素

    方法

    <statement>

    ?

    id parameterClass resultClass parameterMap resultMap cacheModel xmlResultName

    ?

    所有的動態元素

    ?

    insert update delete 所有的查詢方法

    ?

    <insert>

    ?

    id parameterClass parameterMap

    ?

    所有的動態元素 <selectKey>

    ?

    insert

    update

    ?delete

    ?

    <update>

    ?

    id

    parameterClass parameterMap

    ?

    所有的動態元素

    ?

    Insert

    Update

    delete

    ?

    <delete>

    ?

    id parameterClass resultClass parameterMap resultMap cacheModel

    ?

    所有的動態元素

    ?

    所有的查詢方法

    ?

    <select>

    ?

    id parameterClass resultClass parameterMap resultMap cacheModel

    ?

    所有的動態元素

    ?

    所有的查詢方法

    ?

    <procedure>

    ?

    id parameterClass resultClass parameterMap resultMap xmlResultName

    ?

    所有的動態元素

    ?

    insert update delete 所有的查詢方法

    ?



    二、SQL語句 ?
    ?????????SQL語句在mapped statement 中最重要的部份,可以使用符合數據庫或JDBC的任意SQL語句,對于語句有特殊途同歸符號的,可以把SQL語句寫在<![ ]]>里面。如

    < statement? id ="getPersonsByAge" ?parameterClass =”int”? resultClass ="examples.domain.Person" >
    ?
    <![CDATA[
    ???SELECT?*?FROM?PERSON?WHERE?AGE?>?#value#?
    ?
    ]]>
    </ statement >

    自動生成的主鍵
    很多數據庫支持自動生成主鍵的數據類型。不過這通常(并不總是)是個私有的特性。SQL Map通過<insert>的子元素<selectKey>來支持自動生成的鍵值。它同時支持預生成(如Oracle)和后生成兩種類型(如MS-SQL Server)。下面是兩個例子:

    < 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 >

    存儲過程
    SQL Map通過<procedure>元素支持存儲過程。下面的例子說明如何使用具有輸出參數的存儲過程。

    < 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 >

    支持標準的JDBC格式調用存儲過程方法。如果存儲過程回的是游標那又怎么定義的。
    parameterClass

    parameterClass屬性的值是Java類的全限定名(即包括類的包名)。parameterClass屬性是可選的,但強烈建議使用。它的目的是限制輸入參數的類型為指定的Java類,并優化框架的性能。如果您使用parameterMap,則沒有必要使用parameterClass屬性。例如,如果要只允許Java類“examples.domain.Product”作為輸入參數,可以這樣作:

    < statement? id =”statementName”? parameterClass =”? examples.domain.Product” > ?insert?into?PRODUCT?values?(#id#,?#description#,?#price#)
    ?
    </ statement >

    parameterMap

    屬性parameterMap的值等于一個預先定義的<parameterMap>元素的名稱。parameterMap屬性很少使用,更多的是使用上面的parameterClass和inline parameter(接下來會討論)。 注意!動態mapped statement只支持inline parameter,不支持parameter map。 parameterMap的基本思想是定義一系列有次序的參數系列,用于匹配JDBC PreparedStatement的值符號。例如:

    < parameterMap? id =”insert-product-param”? class =”com.domain.Product”>
    ??
    <parameter?property =”id”/>?
    ??
    <parameter?property =”description”/>?
    </parameterMap > ?
    < statement? id =”insertProduct”? parameterMap =”insert-product-param”>? insert?into?PRODUCT?(PRD_ID,?PRD_DESCRIPTION)?values?(?,?);?
    </statement
    >

    如上所述,parameterMap負責將Java Bean的屬性映射成statement的參數。
    雖然parameterMap的外部形式很少使用,理解它如何工作對于理解inline parameter還是很有幫助。本節以下部分將詳細討論inline parameter。 <parameterMap id=”parameterMapName” [class=”com.domain.Product”]> <parameter property =”propertyName” [jdbcType=”VARCHAR”] [javaType=”string”] [nullValue=”NUMERIC”] [null=”-9999999”]/> <parameter …… />
    <parameter …… />
    </parameterMap>
    括號[]是可選的屬性。parameterMap元素只要求屬性id作為唯一標識。屬性class是可選的但強烈推薦使用。和parameterClass類似,class屬性可以框架檢查輸入參數的類型并優化性能。
    一個<parameterMap>的例子

    < parameterMap? id =”insert-product-param”? class =”com.domain.Product”>
    ?
    <parameter?property =”id”? jdbcType =”NUMERIC”? javaType =”int”? nullValue =”-9999999”/>?
    <parameter?property =”description”? jdbcType =”VARCHAR”? nullValue =”NO_ENTRY”/>?
    </parameterMap > ?
    < statement? id =”insertProduct”? parameterMap =”insert-product-param”>?
    insert?into?PRODUCT?(PRD_ID,?PRD_DESCRIPTION)?values?(?,?);?
    </statement
    >

    注意!
    parameterMap并不自動地綁定到特定的Java類。因此在上面的例子中,任何擁有“id”和“description”屬性的Java Bean對象,都可以作為parameterMap的輸入。如果需要將輸入綁定到特定的Java類,可以使用mapped-statement的resultClass屬性。
    ?注意!
    Parameter Map的名稱(name)局部的,只在定義它的SQL Map XML文件中有效。不過,加上SQL Map的名稱(即在<sqlMap>根元素中的名稱)作為前綴,您可以在另一個SQL Map XML文件中引用它。例如,要在另一個文件中引用以上的parameterMap,可以使用名稱“Product.insert-product-param”。

    Inline Parameter簡介

    parameterMap的語法雖然簡單,但很繁瑣。還有一種更受歡迎更靈活的方法,可以大大簡化定義和減少代碼量。這種方法把Java Bean的屬性名稱嵌在Mapped Statement的定義中(即直接寫在SQL語句中)。缺省情況下,任何沒有指定parameterMap的Mapped Statement都會被解析成inline parameter(內嵌參數)。用上面的例子(即Product)來說,就是:

    < statement? id =”insertProduct”? parameterClass =”com.domain.Product”>
    ?
    insert?into?PRODUCT?(PRD_ID,?PRD_DESCRIPTION)?values?(#id#,?#description#);
    ?</statement
    >

    在內嵌參數中指定數據類型可以用下面的語法:

    < statement? id =”insertProduct”? parameterClass =”com.domain.Product”>?
    insert?into?PRODUCT?(PRD_ID,?PRD_DESCRIPTION)?values?(#id:NUMERIC#,?#description:VARCHAR#);?
    </statement
    >

    在內嵌參數中指定數據類型和NULL的替代值可以用這樣的語法:

    <statement id=”insertProduct” parameterClass=”com.domain.Product”>
    insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#);
    </statement>

    注意!在內嵌參數中,要指定NULL的替代值,必須要先指定數據類型。 注意!如需要在查詢時也使用NULL替代值,必須同時在resultMap中定義(如下說明)。
    ?注意!如果您需要指定很多的數據類型和NULL替代值,可以使用外部的parameterMap


    resultClass

    resultClass屬性的值是Java類的全限定名(即包括類的包名)。resultClass屬性可以讓您指定一個Java類,根據ResultSetMetaData將其自動映射到JDBC的ResultSet。只要是Java Bean的屬性名稱和ResultSet的列名匹配,屬性自動賦值給列值。這使得查詢mapped statement變得很短。例如:

    < statement? id ="getPerson" ?parameterClass =”int”? resultClass ="examples.domain.Person" > ?SELECT?PER_ID?as?id,
    PER_FIRST_NAME?as?firstName,
    PER_LAST_NAME?as?lastName,
    PER_BIRTH_DATE?as?birthDate,
    PER_WEIGHT_KG?as?weightInKilograms,?PER_HEIGHT_M?as?heightInMeters?FROM?PERSON?WHERE?PER_ID?=?#value#?
    </ statement >

    resultMap
    ? resultMap是最常用和最重要的屬性。ResultMap屬性的值等于預先定義的resultMap元素的name屬性值(參照下面的例子)。使用resultMap可以控制數據如何從結果集中取出,以及哪一個屬性匹配哪一個字段。不象使用resultClass的自動映射方法,resultMap屬性可以允許指定字段的數據類型,NULL的替代值復雜類型映射(包括其他Java Bean,集合類型和基本類型包裝類)。
    ??

    < resultMap? id =”get-product-result”? class =”com.ibatis.example.Product”>
    ?
    <result?property =”id”? column =”PRD_ID”/>???
    <result?property =”description”? column =”PRD_DESCRIPTION”/>
    ?
    </resultMap >
    ?
    < statement? id =”getProduct”? resultMap =”get-product-result”>?
    ?????? select?*?from?PRODUCT?
    </statement
    >

    xmlResultName

    當直接把查詢結果映射成XML document時,屬性xmlResultName的值等于XML document根元素的名稱。例如:

    < select? id ="getPerson" ?parameterClass =”int”? resultClass ="xml" ?xmlResultName =”person”>?
    SELECT?PER_ID?as?id,?
    PER_FIRST_NAME?as?firstName,?
    PER_LAST_NAME?as?lastName,
    ?PER_BIRTH_DATE?as?birthDate,
    ?PER_WEIGHT_KG?as?weightInKilograms,???PER_HEIGHT_M?as?heightInMeters
    ?FROM?PERSON?WHERE?PER_ID?
    =?#value#?
    </select >

    上面的查詢結果將產生一個XML document,結構如下:

    < person >
    ????
    < id > 1 </ id >
    ????
    < firstName > Clinton </ firstName >
    ????
    < lastName > Begin </ lastName >
    ????
    < birthDate > 1900-01-01 </ birthDate >
    ????
    < weightInKilograms > 89 </ weightInKilograms >
    ????
    < heightInMeters > 1.77 </ heightInMeters >
    </ person >

    基本類型輸入參數
    很簡單就是使用JAVA基礎類型來做為參數了。

    < statement? id =”insertProduct”? parameter =”java.lang.Integer”>?
    select?*?from?PRODUCT?where?PRD_ID? =?#value#? </statement >

    Map類型輸入參數

    < statement? id =”insertProduct”? parameterClass =”java.util.Map”>
    ?
    select?*?from?PRODUCT?where?PRD_CAT_ID? =?#catId#? and?PRD_CODE? =?#code#?
    </statement >

    可以注意到mapped statement的形式完全沒有區別!上面的例子中,如果把Map對象作為輸入參數去調用mapped statement,Map對象必須包含鍵值“catId”和“code”。鍵值引用的對象必須是合適的類型,以上面的例子來說,必須是Integer和String。Result Map(參見以下章節)也支持使用Map類型作為結果參數。要獲得更多信息,請參見“Result Map”和“使用SQL Map API編程”部分。 Map類型也可以使用別名。例如,可以用“map”來代替“java.util.Map”。這些別名參見下面的“支持Parameter Map和Result Map的數據類型”表格。


    三、動態 MAP Statement
    ?????????
    作用是動態構建SQL語句,根據不同的一元或二元運算條件構建復雜的SQL語句,這功能非常好,這樣就可以把寫的BO層的SQL語句構造移值到SQL MAP 文件里。這里例舉一些例子:

    < select? id ="dynamicGetAccountList" ?cacheModel ="account-cache" ?resultMap ="account-result" ? > ?
    select?*?from?ACCOUNT?
    ???
    < isGreaterThan? prepend ="and" ?property ="id" ?compareValue ="0" >
    ?????where?ACC_ID?=?#id#?
    </ isGreaterThan > ?
    order?by?ACC_LAST_NAME?

    </ select >
    上面語句中可以根據參數id的不同值能構造出兩條SQL查詢語句,下面是一個比較復雜的例子:
    <statement?id="dynamicGetAccountList"?resultMap="account-result"?>?
    ???????? select?*?from?ACCOUNT?
    ????
    <dynamic?prepend="WHERE">
    ????????????
    ?<isNotNull?prepend="AND"?property="firstName">?
    ??????????????????? (ACC_FIRST_NAME?=?#firstName#?
    ?????????????
    <isNotNull?prepend="OR"?property="lastName">?
    ??????????????????????? ACC_LAST_NAME?=?#lastName#???
    ???? ?????????
    </isNotNull>?
    ??????????????????)?
    ??????????
    </isNotNull>
    ??
    ??????????<isNotNull?prepend="AND"?property="emailAddress">?
    ?????????????????? ?ACC_EMAIL?like?#emailAddress#?
    ???????????? </isNotNull>
    ?
    ?????????? <isGreaterThan?prepend="AND"?property="id"?compareValue="0">?
    ???????????????????? ACC_ID?=?#id#?
    ??????????? ?
    </isGreaterThan>
    ?
    ?</dynamic>
    ?order?by?ACC_LAST_NAME
    </statement>

    上面的例子中,<dynamic>元素劃分出SQL語句的動態部分。動態部分可以包含任意多的條件標簽元素,條件標簽決定是否在語句中包含其中的SQL代碼。所有的條件標簽元素將根據傳給動態查詢Statement的參數對象的情況來工作。<dynamic>元素和條件元素都有“prepend”屬性,它是動態SQL代碼的一部分,在必要情況下,可以被父元素的“prepend”屬性覆蓋。上面的例子中,prepend屬性“where”將覆蓋第一個為“真”的條件元素。這對于確保生成正確的SQL語句是有必要的。例如,在第一個為“真”的條件元素中,“AND”是不需要的,事實上,加上它肯定會出錯。以下小節討論不同的條件元素,包括二元條件元素,一元條件元素和其他動態元素。
    二元條件元素
    ? ?????二元條件元素將一個屬性值和一個靜態值或另一個屬性值比較,如果條件為“真”,元素體的內容將被包括在查詢SQL語句中。 ??
    ?二元條件元素的屬性:?
    prepend - 可被覆蓋的SQL語句組成部分,添加在語句的前面(可選)property - 被比較的屬性(必選)
    compareProperty - 另一個用于和前者比較的屬性(必選或選擇compareValue)
    ?compareValue - 用于比較的值(必選或選擇compareProperty)

    二元條件元系的屬性

    <isEqual>

    比較屬性值和靜態值或另一個屬性值是否相等。

    <isNotEqual>

    比較屬性值和靜態值或另一個屬性值是否不相等。

    <isGreaterThan>

    比較屬性值是否大于靜態值或另一個屬性值。

    <isGreaterEqual>

    比較屬性值是否大于等于靜態值或另一個屬性值。

    <isLessThan>

    比較屬性值是否小于靜態值或另一個屬性值。

    <isLessEqual>

    比較屬性值是否小于等于靜態值或另一個屬性值。 例子: <isLessEqual prepend=”AND” property=”age” compareValue=”18”> ADOLESCENT = ‘TRUE’ </isLessEqual>

    ?


    一元條件元素
    一元條件元素檢查屬性的狀態是否符合特定的條件。
    一元條件元素的屬性:
    prepend - 可被覆蓋的SQL語句組成部分,添加在語句的前面(可選)
    property - 被比較的屬性(必選)

    <isPropertyAvailable>

    檢查是否存在該屬性(存在parameter bean的屬性)。

    <isNotPropertyAvailable>

    檢查是否不存在該屬性(不存在parameter bean的屬性)。

    <isNull>

    檢查屬性是否為null

    <isNotNull>

    檢查屬性是否不為null

    <isEmpty>

    ?

    檢查Collection.size()的值,屬性的StringString.valueOf(),是否為null或空(“”或size() < 1)。

    ?

    <isNotEmpty>

    ?

    檢查Collection.size()的值,屬性的StringString.valueOf(),是否不為null或不為空(“”或size() > 0)。 例子:

    ?<isNotEmpty prepend=”AND” property=”firstName” > FIRST_NAME=#firstName# </isNotEmpty>

    ?

    還有兩個其它的條件元素,<isParameterPresent>,<iterate>就不說了,用到的時候可以再查。

    簡單的動態SQL元素

    雖然動態Mapped Statement API功能強大,但有時僅需要一小部分的動態SQL即可。為此,SQL statement和statement都可以包含簡單的動態SQL元素,以幫助實現動態的order by子句,動態的查詢字段或SQL語句的其他動態部分。簡單動態SQL元素的概念有點象inline parameter的映射,但使用了稍微不同的語法。考慮下面的例子:
    ?<statement id=”getProduct” resultMap=”get-product-result”>
    ???????select * from PRODUCT order by $preferredOrder$
    </statement>
    簡單動態元素可以包含在<dynamic-mapped-statement>中,當要修改SQL語句本身時它能派上用場。例如:

    <statement?id=”getProduct”?resultMap=”get-product-result”>?
    SELECT?*?FROM?PRODUCT?
    <dynamic?prepend
    =”WHERE”>
    ?
    <isNotEmpty?property=”description”>???
    ????? ?
    PRD_DESCRIPTION?$operator$?#description#?</isNotEmpty>?
    </dynamic>?
    </statement>

    三、使用SQL Map API編程

    ???那那10來個方法吧,有空看看



    posted on 2007-01-04 21:31 有貓相伴的日子 閱讀(11854) 評論(5)  編輯  收藏 所屬分類: ibatis/hibernate/持久層技術

    評論:
    # re: Ibatis學習隨筆 2008-03-11 15:42 | wangpan
    請教:
    如何調用一個帶多個條件的查詢語句?  回復  更多評論
      
    # re: Ibatis學習隨筆 2008-03-11 15:43 | wangpan
    請教:
    如何調用一個帶多個條件的查詢語句?

    如這個
    <select id="selectVenues" parameterClass ="int" resutlMap="account-result">
    select
    id,
    serviceitem,
    trade,
    pro,
    city,
    vcname,
    vename,
    caddress,
    eaddress,
    gamecname,
    gameename,
    collecter,
    batch
    from o_venues

    <dynamic prepend="where">
    <isNotEmpty prepend="and" property="city">
    (city = #city#)
    </isNotEmpty>
    <isNotEmpty prepend="and" property="vcname">
    (vcname = #vcname#)
    </isNotEmpty>
    </dynamic>
    </select>  回復  更多評論
      
    # re: Ibatis學習隨筆 2008-05-06 11:44 | 請教問題
    我用ibatis讀tomcat下的數據庫連接池,報這個錯是什么原因Cause: com.ibatis.sqlmap.engine.transaction.TransactionException: JdbcTransaction initialization failed. DataSource was null.
    有人能幫解決下嗎?我的qq327362894
      回復  更多評論
      
    # re: Ibatis學習隨筆 2009-04-30 16:15 | 56
    體育  回復  更多評論
      
    # re: Ibatis學習隨筆 2009-12-17 21:39 | 團派家園
    ibaits會如何呢?  回復  更多評論
      
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 国产婷婷综合丁香亚洲欧洲| 四虎永久在线精品免费观看视频| 亚洲伊人久久大香线焦| 自拍偷自拍亚洲精品第1页 | 亚洲午夜无码AV毛片久久| 97视频免费在线| 95免费观看体验区视频| 中文字幕在线免费观看视频| 国产成人亚洲毛片| 亚洲精品精华液一区二区| 亚洲校园春色小说| 精品亚洲国产成AV人片传媒| 亚洲三区在线观看无套内射| 亚洲国产精品激情在线观看| 青青青国产免费一夜七次郎| 在线观看特色大片免费视频| 在线a免费观看最新网站| 久久精品中文字幕免费| 嫩草在线视频www免费看| 一个人免费观看视频在线中文 | 亚洲毛片不卡av在线播放一区| 国产精品国产免费无码专区不卡| 无码少妇一区二区浪潮免费| 免费观看激色视频网站bd| 97在线视频免费播放| 中文字幕免费在线| 1000部啪啪未满十八勿入免费| 久久成人免费播放网站| 玖玖在线免费视频| 久久国产免费一区| 中文字幕视频免费| 精品久久8x国产免费观看| 日本高清在线免费| 免费福利网站在线观看| 国内免费高清在线观看| 最近免费中文字幕大全视频| 黄色成人网站免费无码av| 成年女人毛片免费播放视频m| 成人免费毛片观看| 免费大片黄手机在线观看 | 中国一级特黄高清免费的大片中国一级黄色片 |