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
相关文章
相关标签/搜索