Spring項目配置ibatis

biz-context.xml
sqlMapClient這個對象是iBatis操做數據庫的接口(執行CRUD等操做),它也能夠執行事務管理等操做。這個類是咱們使用iBATIS的最主要的類。它是線程安全的。一般,將它定義爲單例。
<bean id="sqlMapClient"        
 	 class="com.paic.pafa.app.lwc.service.persistence.dao.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
 	 <description>iBATIS SQL Mapping配置文件名,系統要可以在CLASSPATH中找到該文件</description>
           	<value>sqlmap-config.xml</value>
        </property>
        <property name="maxRowCount">
            <description>iBATIS 查詢數據庫的最大數據庫記錄行數. 默認爲5000 </description>
            <value>${ibatis.query.maxrowcount}</value>
       	</property>   
       	<property name="excludeStatements">
           <description>不使用系通通一配置的結果集的語句</description>
           <list>
           </list>
       	</property>
       	<property name="maxRowCount4Excludes">
           <description>excludeStatements中的sql查詢數據庫的最大記錄行數.默認爲5000</description>
           <value>${ibatis.query.maxRowCount4Excludes}</value>
       	</property>          
       	<property name="isThrowExcept">
           <description>
              配置當結果集超過限制值後,系統是拋出異常仍是返回限制範圍內的數據。
              true:拋出異常
              false:返回限制範圍內的數據
              默認爲true.
           </description>       
       	<value>TRUE</value>
       	</property>
</bean>

sqlmap-config.xml java

<sqlMapConfig>
    <!--
    參數說明:
    cacheModelsEnabled:
    啓用或禁用SqlMapClient的全部緩存model。調試程序時使用。
    enhancementEnabled:
    啓用或禁用運行時字節碼加強,以優化訪問Java Bean屬性的性能,同時優化延遲加載
    的性能。
    lazyLoadingEnabled:
    啓用或禁用SqlMapClient的全部延遲加載。調試程序時使用。
    maxRequests:
    同時執行SQL語句的最大線程數。大於這個值的線程將阻塞直到另外一個線程執行完成。
    不一樣的DBMS有不一樣的限制值,但任何數據庫都有這些限制。一般這個值應該至少是
    maxTransactions的10倍,而且老是大於maxSessions和maxTranactions。減少這個參數值一般能提升性能。
    maxSessions:
    同一時間內活動的最大session數。一個session能夠是代碼請求的顯式session,
    也能夠是當線程使用SqlMapClient實例(即執行一條語句)自動得到的session。
    它應該老是大於或等於maxTransactions並小於maxRequests。減少這個參數值一般能
    減小內存使用。
    maxTransactions: 
    同時進入SqlMapClient.startTransaction()的最大線程數。大於這個值的線程將阻塞
    直到另外一個線程退出。不一樣的DBMS有不一樣的限制值,但任何數據庫都有這些限制。這個
    參數值應該老是小於或等於maxSessions並老是遠遠小於maxRequests。減少這個參數值
    一般能提升性能。
    useStatementNamespaces:
    若是啓用本屬性,必須使用全限定名來引用mapped statement。Mapped statement的
    全限定名由sql-map的名稱和mapped-statement的名稱合成,例如
    queryForObject(「sqlMapName.statementName」)
    -->
    <settings cacheModelsEnabled="true"
        enhancementEnabled="false"
        lazyLoadingEnabled="false"
        maxRequests="3000"
        maxSessions="3000"
        maxTransactions="3000"
       useStatementNamespaces="false"/>


    <!--
添加sql map文件。當一個SQL Map文件太大的時候,能夠拆分紅若干個小的文件。
建議按照模塊拆分sql map文件,好比sqlmap-mapping-module-a.xml,
sqlmap-mapping-module-a.xml。<property name="Driver.SetBigStringTryClob" value="true"/>
命名規範爲:sqlmap-mapping-模塊名.xml(所有小寫)
<sqlMap resource="sqlmap-mapping-bankvirement.xml"/>
-->
<sqlMap resource="sqlmap-mapping-privilege.xml"/>
<sqlMap resource="sqlmap-mapping-worktable.xml"/>
<sqlMap resource="sqlmap-mapping-workflow.xml"/>
<sqlMap resource="sqlmap-mapping-print.xml"/>
<sqlMap resource="sqlmap-mapping-newbusiness.xml"/>
</sqlMapConfig>




DAO對SqlMapClient的引用
  
<bean id="idGeneratorDAO"
        class="com.palic.egis.common.integration.dao.impl.IdGeneratorIbatisDAO">
        <description>用於生成Sequence ID的DAO</description>
        <property name="dataSource">
            <ref local="dsFactory"/>
        </property>
        <property name="sqlMapClient">
            <ref local="sqlMapClient"/>
        </property>
        <property name="useRandomSequence">
            <description>
            若是爲true將隨機產生序號,而不經過Oracle的package來獲得。
            做爲演示使用。添加這個配置的做用是演示能夠經過在context配置文件
            中添加本身的配置。
            </description>
            <value>false</value>
        </property>
    </bean>




DAO的實現:
public class IdGeneratorIbatisDAO extends SqlMapClientDaoSupport implements IdGeneratorDAO




獲取SQLMap模板
SqlMapClientTemplate sqlMap = getSqlMapClientTemplate();
sqlMap.queryForObject("generateSequence", map);




附上數據原配置
<bean id="dsFactory"
        class="com.paic.pafa.app.lwc.service.persistence.datasource.DataSourceFactoryBean" >
        <property name="defaultDSKey">
            <description>缺省的數據源,必須指定爲下面map中的entry key之一</description>
            <value>GBSDS</value>
        </property>
        <property name="dataSources">
            <description>能夠在map屬性裏面添加多個數據源</description>
            <map>
                <entry key="GBSDS">
                    <ref local="defaultDS"/>
                </entry>
                <entry key="GBSDS_XA">
                    <ref local="gbsDS_XA"/>
                </entry>
            </map>
        </property>
    </bean>


   <bean id="defaultDS"
        class="com.paic.pafa.app.lwc.core.naming.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>${defaultDS}</value>
        </property>
        <property name="jndiTemplate">
            <ref local="jndiTemplate"/>
        </property>
    </bean>    


context-egis-nbu.properties
defaultDS=jdbc/egis/gbsds


biz-context.xml
<!-- JNDI定義 -->
    <bean id="jndiTemplate"
        class="com.paic.pafa.app.lwc.core.naming.JndiTemplate">
        <description>定義一個用做模板的JNDI,能夠被其它bean引用</description>
        <property name="environment">
            <props>
                <prop key="java.naming.provider.url">${egis.txnActionBean.jndi.url}</prop>
                <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            </props>
        </property>
    </bean>


context-egis-nbu.properties
#egis的TxnActionBean JNDI配置,確定是localhost ,可是須要指定端口
egis.txnActionBean.jndi.url=t3://localhost:43962
相關文章
相關標籤/搜索