`
aigo
  • 浏览: 2635074 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

集成iBATIS3和bonecp

    博客分类:
  • Java
阅读更多

原文:http://blog.csdn.net/hshxf/article/details/5886715

 

bonecp是一款开源的、高效的数据库连接池组件,它号称是现在最快的连接池组件,官网上称是dbcp的25倍,但是iBATIS3并没有为它开发类厂,iBATIS3只支持3中类型的类厂,分别是UNPOOLED,POOLED和JNDI,要想集成只能自己开发了,自己开发也不难,只要实现DataSourceFactory接口就可以了,代码很简单:

 

package com.ibatis.factory;

import com.jolbox.bonecp.BoneCPDataSource;
import org.apache.ibatis.datasource.DataSourceFactory;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.factory.DefaultObjectFactory;
import org.apache.ibatis.reflection.factory.ObjectFactory;
import org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory;
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;

import javax.sql.DataSource;
import java.util.Properties;

public class BoneCPFactory
        implements DataSourceFactory
{
    private static final String DRIVER_PROPERTY_PREFIX = "driver.";
    private static final int DRIVER_PROPERTY_PREFIX_LENGTH = DRIVER_PROPERTY_PREFIX.length();

    private static final ObjectFactory DEFAULT_OBJECT_FACTORY = new DefaultObjectFactory();
    private static final ObjectWrapperFactory DEFAULT_OBJECT_WRAPPER_FACTORY = new DefaultObjectWrapperFactory();

    private DataSource dataSource;

    public BoneCPFactory()
    {
        // 创建bonecp datasource
        dataSource = new BoneCPDataSource();

    }

    public DataSource getDataSource()
    {
        return dataSource;
    }

    /**
     * 配置属性
     */
    public void setProperties(Properties properties)
    {

        Properties driverProperties = new Properties();
        MetaObject metaDataSource = MetaObject.forObject(dataSource, DEFAULT_OBJECT_FACTORY, DEFAULT_OBJECT_WRAPPER_FACTORY);

        for (Object key : properties.keySet())
        {
            String propertyName = (String) key;
            // 处理driver.xxx属性,e.g driver.encoding=UTF8
            if (propertyName.startsWith(DRIVER_PROPERTY_PREFIX))
            {
                String value = properties.getProperty(propertyName);
                driverProperties.setProperty(propertyName.substring(DRIVER_PROPERTY_PREFIX_LENGTH), value);
            }
            else
            {
                // 利用反射技术,初始化datasource属性的值
                if (metaDataSource.hasSetter(propertyName))
                {
                    String value = (String) properties.get(propertyName);
                    Object convertedValue = convertValue(metaDataSource, propertyName, value);
                    metaDataSource.setValue(propertyName, convertedValue);
                }
            }
        }
        // 如果配置driver.xxx属性,初始化
        if (driverProperties.size() > 0)
        {
            metaDataSource.setValue("driverProperties", driverProperties);
        }
    }

    /**
     * 转换数字和Boolean型
     *
     * @param metaDataSource
     * @param propertyName
     * @param value
     * @return
     */
    @SuppressWarnings ("unchecked")
    private Object convertValue(MetaObject metaDataSource, String propertyName, String value)
    {
        Object convertedValue = value;
        Class targetType = metaDataSource.getSetterType(propertyName);
        if (targetType == Integer.class || targetType == int.class)
        {
            convertedValue = Integer.valueOf(value);
        }
        else if (targetType == Long.class || targetType == long.class)
        {
            convertedValue = Long.valueOf(value);
        }
        else if (targetType == Boolean.class || targetType == boolean.class)
        {
            convertedValue = Boolean.valueOf(value);
        }
        return convertedValue;
    }
}

 

 

然后在Configuration.xml配置就可以了,首先配置类厂别名:

<typeAliases>
	<typeAlias type="com.ibatis.factory.BoneCPFactory" alias="BONECP" />
</typeAliases>

 

接着配置environmen:

<environments default="defaultEV">
	<environment id="defaultEV">
		<transactionManager type="JDBC"></transactionManager>
		<dataSource type="BONECP">
			<property name="driverClass" value="${driver}" />
			<property name="username" value="${user}" />
			<property name="password" value="${password}" />
			<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/bone" />
			<property name="idleMaxAge" value="10" />
			<property name="partitionCount" value="1" />
			<property name="maxConnectionsPerPartition" value="5" />
			<property name="minConnectionsPerPartition" value="1" />
			<property name="driver.encoding" value="UTF8" />
		</dataSource>
	</environment>
</environments>

 

 

需要配置的属性很简单,就是BoneCPDataSource类的属性。如此就大功告成了。

分享到:
评论

相关推荐

    struts_spring_ibatis_bonecp

    Struts、Spring 和 iBatis 是三个非常重要...总的来说,Struts、Spring 和 iBatis 的集成以及 Spring 对 BoneCP 的管理,构建了一个完整的 Java Web 应用架构。这种架构不仅易于维护,还能有效提升开发效率和系统性能。

    spring3学习笔记(2)-集成ibatis3进行单元测试

    在本篇“Spring3学习笔记(2)-集成ibatis3进行单元测试”中,我们将深入探讨如何在Spring3框架中整合Ibatis3,并利用它来进行单元测试。这个主题对于理解如何在实际项目中实现数据访问层的测试具有重要意义。在现代...

    spring 集成ibatis

    3. **Mapper 接口和 XML 映射文件**:在 iBatis 中,我们可以定义一个 Mapper 接口,这个接口的方法对应 SQL 映射文件中的 SQL 语句。Spring 通过使用接口代理,使得我们可以在服务层直接调用这些方法,执行 SQL ...

    Eclipse Spring3.x集成ibatis2.x开发案例

    总结来说,"Eclipse Spring3.x集成ibatis2.x开发案例"涵盖了Java开发中的重要集成技术,涉及了Spring框架的配置和使用,以及iBatis的SQL映射机制。通过详细的配置和代码实践,开发者可以更好地理解如何在实际项目中...

    spring3.0+ibatis 集成实例

    Spring 3.0 和 iBatis 的集成是一个常见的企业级应用开发模式,它结合了Spring的强大依赖注入(DI)和面向切面编程(AOP)能力与iBatis灵活的SQL映射机制,实现了业务逻辑层与数据访问层的分离,提高了代码的可维护...

    springmvc集成ibatis

    SpringMVC 和 iBATIS 的集成是 Java Web 开发中常见的技术组合,它们分别负责 MVC 架构中的控制层和数据访问层。SpringMVC 是一个轻量级的 MVC 框架,提供了灵活的请求处理和丰富的依赖注入功能;而 iBATIS 是一个...

    Ibatis3手册 Ibatis3参考手册

    Ibatis3以其灵活性和高效性在众多ORM框架中脱颖而出,特别适合那些对SQL查询有特殊需求或者需要精细化控制的应用场景。希望本文能够帮助开发者更好地理解和掌握Ibatis3的核心知识,为实际项目开发打下坚实的基础。

    WEB项目-集成Flex3_BlazeDS3[1].2_Spring2.5.6_iBatis2.3.4_Struts2.1.8

    这是一个关于Web项目集成的技术组合,涉及了Flex 3、BlazeDS 3、Spring 2.5.6、iBatis 2.3.4和Struts 2.1.8等多个关键组件。这些技术在现代企业级应用程序开发中扮演着重要角色,尤其在构建富互联网应用程序(RIA)...

    spring+ibatis集成文档

    ### Spring与iBatis集成开发详解 #### 一、引言 在Java企业级应用开发领域,Spring...综上所述,Spring与iBatis的集成为企业级应用开发提供了一个强大而灵活的解决方案,对于提高软件开发效率和质量具有重要意义。

    spring与ibatis整合集成实例

    9. **测试**:使用 Spring Test 和 MyBatis 提供的测试工具,可以编写单元测试和集成测试,确保每个组件都能正常工作。 以上就是 Spring 与 iBATIS 整合集成的主要步骤和知识点。通过这样的集成,可以利用 Spring ...

    spring集成ibatis示例-websphere5.1选型webservice

    综上所述,这个示例展示了如何在Spring中集成iBATIS实现数据访问,以及如何在WebSphere 5.1环境下部署和发布Web服务。这不仅涵盖了Java企业级开发的基础知识,还涉及了服务器管理和Web服务技术,是学习和实践Java EE...

    ibatis3资料-介绍

    iBATIS3作为iBATIS框架的最新版本,引入了多项新功能和改进,使其在性能、灵活性和易用性方面有了显著提升。 #### 新功能介绍 iBATIS3的主要新功能包括: 1. **增强的XML配置**:iBATIS3引入了一个更强大的XML...

    webwork+ibatis+spring oracle c3p0 集成框架

    3. 集成Spring和iBatis:通过Spring的SqlSessionFactoryBean,将iBatis的配置信息注入到Spring中,实现对数据库操作的管理。 4. 配置WebWork和Spring:在WebWork的配置文件中,配置Spring的ApplicationContext加载...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 ...

    sping集成ibatis与struts

    在集成过程中,通常需要配置Spring的ApplicationContext,定义Bean的定义和依赖关系,包括Struts的Action和iBatis的SqlSessionFactory。Struts的配置文件中需要指定Action的跳转规则,同时通过Spring插件实现Action...

    struts1+spring+hibernate+ibatis集成

    4. 集成iBatis/MyBatis:配置SqlMapConfig.xml,编写Mapper接口和XML映射文件,实现SQL查询的动态化。 5. 使用Spring管理Hibernate和iBatis:通过Spring的HibernateDaoSupport或SqlSessionTemplate来实现对持久层的...

    ibatis与strtus2集成的简单示例

    3. **添加依赖**:在pom.xml中引入Struts2和iBatis的依赖库,例如: ```xml &lt;!-- Struts2 --&gt; &lt;groupId&gt;org.apache.struts &lt;artifactId&gt;struts2-core &lt;version&gt;2.5.24 &lt;!-- iBatis --&gt; &lt;groupId&gt;org...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    "TestSpringIbatis"则可能是Spring与Ibatis集成的测试案例,展示了如何配置Ibatis的SqlSessionFactory和Mapper接口,以及如何在Spring中调用Ibatis的SQL查询。 集成Spring、Hibernate和Ibatis的过程通常包括以下...

    ibatis+oracle实例

    4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接的复用性和性能。 综上所述,`ibatis+oracle`实例展示了如何利用Ibatis的灵活性和Oracle的强大功能进行数据库操作。...

Global site tag (gtag.js) - Google Analytics