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

<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




你可能感兴趣的:(Spring项目配置ibatis)