IBATIS使用proxool连接池

本文介绍了如何在项目中遇到IBATIS无法使用SIMPLE连接池连接专有数据库的问题,转而使用Proxool,并通过Spring配置使IBATIS能够使用Proxool连接池。详细配置步骤包括设置PropertyPlaceholderConfigurer、ProxoolDataSource以及SqlMapClientFactoryBean,最终实现了静态代码中从Spring获取SqlMapClient,成功让IBATIS利用Proxool进行数据库操作。
摘要由CSDN通过智能技术生成

在众多项目中使用过诸多连接池,如DBCP,PROXOOL等,发现还是PROXOOL好使,主要是兼容性好,性能稳定。

 

在某次项目中,由于历史版本问题,使用了两个连接池,一个是proxool,一个是IBATIS自由的SIMPLE,但是在连接一个专有数据库时,却发现proxool可以创建连接池,而IBATIS的SIMPLE却不能建立连接(报经典的错The network apdapter counld‘t estenbilished the connection。。。)。后来将IBATIS改用DBCP,也不行。就想要是IBATIS能用proxool连接池就好了,查看IBATIS文档,文档上说IBATIS使用的连接池可以自己制定,由于项目紧,来不急了(等以后有时间了再研究一下),后来想想,能不能用spring把它们两个整合起来,一番搜索后,结果如下:

1.利用spring将IBATIS和proxool整合起来,使IBATIS轻松使用proxool连接池。

Spring 配置如下:

<beans>
    <bean
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="/conf/dbpool.properties" />
        <property name="fileEncoding" value="UTF-8" />
    </bean>
    <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
        <property name="driver">
            <value>${jdbc-0.proxool.driver-class}</value>
        </property>
        <property name="driverUrl">
            <value>${jdbc-0.proxool.driver-url}</value>
        </property>
        <property name="user">
            <value>${jdbc-0.user}</value>
        </property>
        <property name="password">
            <value>${jdbc-0.password}</value>
        </property>
        <property name="alias">
            <value>bst</value>
        </property>
        <property name="prototypeCount">
            <value>5</value>
        </property>
        <property name="maximumConnectionCount">
            <value>10</value>
        </property>
        <property name="minimumConnectionCount">
            <value>5</value>
        </property>
        <property name="maximumActiveTime">
            <value>10000</value>
        </property>
        <property name="trace">
            <value>true</value>
        </property>
        <property name="verbose">
            <value>true</value>
        </property>
    </bean>
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="com/bw/bst/db/SqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

 

比较有意思的是SqlMapClientFactoryBean是sqlMapClient的工厂,所以可以直接从spring得到sqlMapClient。

因此只需要将原代码中从IBATIS构造sqlMapClient,改为从spring获取即可。

 

如原代码片段为:

    static {
        try {
            Reader reader = Resources.getResourceAsReader("com/bw/bst/db/SqlMapConfig.xml");
            sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
            reader.close();
        } catch (IOException e) {
            // Fail fast.
            throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
        }
    }

 

改为:

 static {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"},SqlMapUtil.class);
       sqlMapper= (SqlMapClient)  context.getBean("sqlMapClient");
    }

 

轻松又省力的使IBATIS使用了proxool连接池。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值