`
zuzong
  • 浏览: 115762 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在iBatis中加入c3p0数据库连接池

    博客分类:
  • java
阅读更多
我看论坛里有两个人写了在iBatis中加入c3p0,我也就不跟着掺合了,做这个的原因是没法用spring,又需要连接池,且对DBCP一直观感不加,没法,只好自己动手了

在iBatis中加入c3p0没啥难技术含量,写个文章备份下

首先打开iBatis的源码包,找到com.ibatis.sqlmap.engine.datasource包,在里面新建个类
C3p0DataSourceFactory,并实现DataSourceFactory接口,里面的代码是
	private DataSource dataSource;
	
	public DataSource getDataSource() {
		return dataSource;
	}

	public void initialize(Map map) {
		C3p0Configuration c3p0 = new C3p0Configuration(map);
	    dataSource = c3p0.getDataSource();
	}


然后到com.ibatis.common.jdbc包里,新建类C3p0Configuration,里面的代码是。。。太长了,先给个片段,具体的下载附件吧,原来在dbcp那部分里,还有单独加载配置文件的方法,我觉得如果连这个xml都读不了,那别的一样没法读
	private static final Probe PROBE = ProbeFactory.getProbe();
	private DataSource dataSource;

	/**
	 * Constructor to supply a map of properties
	 * 
	 * @param properties
	 *            - the map of configuration properties
	 */
	public C3p0Configuration(Map properties) {
		try {
			dataSource = legacyC3p0Configuration(properties);
		} catch (Exception e) {
			throw new RuntimeException(
					"Error initializing C3p0DataSourceFactory.  Cause: " + e, e);
		}
	}

	/**
	 * Getter for DataSource
	 * 
	 * @return The DataSource
	 */
	public DataSource getDataSource() {
		return dataSource;
	}

	private boolean notEmpty(String s) {
		return s != null && s.length() > 0;
	}

	private boolean notSelfString(String s, String compareStr) {
		return !s.equalsIgnoreCase(compareStr);
	}

	private DataSource legacyC3p0Configuration(Map map) {

		ComboPooledDataSource combo = null;

		try {
			if (map.containsKey("JDBC.Driver")) {

				combo = new ComboPooledDataSource();

				String driverClass = (String) map.get("JDBC.Driver");
				String jdbcUrl = (String) map.get("JDBC.ConnectionURL");
				String user = (String) map.get("JDBC.Username");
				String password = (String) map.get("JDBC.Password");

				Class.forName(driverClass);
				combo.setDriverClass(driverClass);
				combo.setJdbcUrl(jdbcUrl);
				combo.setUser(user);
				combo.setPassword(password);

				String acquireIncrement = (String) map
						.get("Pool.acquireIncrement");
				if (notEmpty(acquireIncrement)
						&& notSelfString(acquireIncrement, "acquireIncrement"))
					combo.setAcquireIncrement(Integer
							.parseInt(acquireIncrement));

......................


最后在com.ibatis.sqlmap.engine.config包里,找到SqlMapConfiguration,在里面找到,加上C3P0就好了
    // DATA SOURCE ALIASES
    typeHandlerFactory.putTypeAlias("SIMPLE", SimpleDataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("DBCP", DbcpDataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("C3P0", C3p0DataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("JNDI", JndiDataSourceFactory.class.getName());



具体的源码看附件吧,文件名是“iBatis添加c3p0.rar”里面有c3p0-config.properties和SqlMapConfig.xml

还有打包好的ibatis jar,在附件里,名字是ibatis-2.3.4.726-c3p0.jar
2
0
分享到:
评论
3 楼 zuzong 2009-06-13  
补遗:

private boolean notSelfString(String s, String compareStr) { 
        return !s.equalsIgnoreCase(compareStr); 
    }

原来在ibatis的DBCP里,没这项判断,但我测试时发现,如果在SqlMapConfig.xml里,
类似这项
<property name="Pool.description" value="${description}"/>

当${description}是空值时,就会直接传入EL里面的字符串description

所以,如果EL式里面的字符串变了,这个判断就没治了。。。
2 楼 shunzheheliu 2009-06-13  
木用过ibatis还有c3p0,非常纯洁的顶【支持】一下
1 楼 孙宁振 2009-06-13  
木用过ibatis,纯洁的支持一下

相关推荐

    ibatis-2.3.0.677增加对c3p0连接池的支持

    标题 "ibatis-2.3.0.677增加对c3p0连接池的支持" 描述了MyBatis框架的一个更新,其中包含了对c3p0数据库连接池的集成。MyBatis是一个轻量级的Java持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,提供了比...

    webwork+ibatis+spring oracle c3p0 集成框架

    总结:这个集成框架结合了WebWork的轻量级MVC、iBatis的灵活数据库操作、Spring的全面企业级服务以及C3P0的数据库连接池,为Java开发提供了强大的工具集合,能够构建出高效、稳定且易于维护的企业应用。通过深入理解...

    扩展 iBatis 以透明支持多种数据库

    4. **数据库连接池**:为提高性能,通常会使用数据库连接池管理数据库连接。针对不同数据库,可能需要配置不同的连接池实现,如 HikariCP、C3P0 或者 DBCP。 5. **驱动程序管理**:在项目中,需要为每种数据库添加...

    osgi数据库连接demo

    在这个“osgi数据库连接demo”中,我们将探讨如何在OSGi环境中配置C3P0作为Oracle数据库连接池,并集成iBATIS作为数据访问层。 首先,C3P0是一个开源的JDBC连接池,它提供了一些额外的功能,如自动管理数据库连接、...

    ibatis应用

    iBatis本身并不包含数据库连接池,但可以与常见的数据库连接池如C3P0、DBCP或HikariCP等配合使用。数据库连接池负责管理数据库连接的创建、复用和释放,提高了系统的性能和资源利用率。 四、iBatis的映射机制 ...

    proxool 连接池实例

    Proxool是由iBatis团队开发的,其设计目标是提供一个简单易用、功能全面且性能优异的数据库连接池。与C3P0、DBCP、HikariCP等其他连接池相比,Proxool在小型项目或测试环境中表现出色,尤其适合那些对资源管理和性能...

    ibatis中文开发指南

    7. 数据源集成:iBATIS可以轻松地与各种数据库连接池集成,如C3P0、Druid等,提供更高效的数据访问。 8. 与ORM框架的兼容:尽管iBATIS自身不完全属于ORM框架,但它可以与其他ORM框架如Hibernate配合使用,实现更...

    springMVC和ibatis实现sql2005数据库插入案例

    - 配置数据库连接池,如C3P0或Druid,以提高数据库连接的复用性。 - 设置JDBC驱动,提供数据库URL、用户名和密码。 4. **实体类(Entity)** - 创建与数据库表对应的Java类,例如User.java,包含属性(字段)和...

    ibatis+oracle实例

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

    ibatis-2.3.2.715.jar

    例如,它可以与C3P0、DBCP等连接池配合使用。 4. 参数映射与结果映射:Ibatis提供了强大的参数映射和结果映射机制,能够自动将Java对象与SQL语句中的参数和查询结果进行匹配。通过`&lt;parameterMap&gt;`和`&lt;resultMap&gt;`...

    proxool源码

    **Proxool源码分析** Proxool是一个开源的、基于Java的数据库连接池,它在2003年由iBatis(现在...此外,通过对比其他知名的数据库连接池,如C3P0、HikariCP、Druid等,可以进一步拓宽对数据库连接池设计思路的认识。

    axis2 ibatis spring简单资料

    c3p0 连接池参数包括最大活动连接数、最大空闲时间、自动提交等,用于优化数据库连接的管理和性能。 8. **Hibernate 配置**:虽然主要讨论的是 Axis2、iBatis 和 Spring,但文件中还提到了 Hibernate 的配置,如 ...

    spring+ibatis的项目需要的jar包

    3. commons-dbcp.jar 或 c3p0.jar:这些是数据库连接池的实现,用于高效管理数据库连接。 4. mybatis-spring.jar:这是Spring与iBatis之间的桥梁,提供了将iBatis SqlSessionTemplate和SqlSessionFactoryBean集成到...

    ibatis

    在iBATIS中,数据源是通过DataSource对象定义的,通常我们会在配置文件(如:SqlMapConfig.xml)中设置连接池参数,例如Druid或C3P0。同时,还需要配置数据库的连接信息,如URL、用户名和密码。 然后,我们需要创建...

    springmvc整合ibatis

    在整合中,我们需要配置 C3P0 数据源,以便为应用程序提供高效的数据库连接管理。 5. **配置整合**:在 SpringMVC 配置文件中,需要添加 iBatis 相关的配置,如 SqlSessionFactoryBean、DataSource 等。同时,也...

    ibatis 开发指南

    在使用iBatis时,首先要创建数据库连接池,如C3P0或Druid,并在SqlMapConfig.xml中配置。然后,定义Mapper接口,每个方法代表一个数据库操作。接着,编写XML映射文件,设置SQL语句、参数映射和结果映射。最后,在...

    iBatis-JPetStore-5.0

    iBatis可以方便地与第三方数据库连接池如C3P0, HikariCP等集成,提高数据库连接的复用性和性能。 通过学习和实践“iBatis-JPetStore-5.0”项目,你将能够掌握iBatis的基本使用,包括SQL映射、参数映射、结果映射、...

    spring+ibatis

    可以使用Apache的DBCP或C3P0等连接池实现,或者使用Spring的AbstractDataSource类。 4. **SqlSessionFactory配置**: 创建SqlSessionFactoryBean,它会根据配置文件(如`mybatis-config.xml`)创建...

    Spring集成iBatis

    在`jdbc.properties`和`c3p0.properties`中,存储了数据库连接的相关配置。`jdbc.properties`通常包含数据库驱动类名、数据库URL、用户名和密码等基本信息。`c3p0.properties`则是针对C3P0连接池的配置,如初始化...

Global site tag (gtag.js) - Google Analytics