我看论坛里有两个人写了在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
分享到:
相关推荐
标题 "ibatis-2.3.0.677增加对c3p0连接池的支持" 描述了MyBatis框架的一个更新,其中包含了对c3p0数据库连接池的集成。MyBatis是一个轻量级的Java持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,提供了比...
总结:这个集成框架结合了WebWork的轻量级MVC、iBatis的灵活数据库操作、Spring的全面企业级服务以及C3P0的数据库连接池,为Java开发提供了强大的工具集合,能够构建出高效、稳定且易于维护的企业应用。通过深入理解...
4. **数据库连接池**:为提高性能,通常会使用数据库连接池管理数据库连接。针对不同数据库,可能需要配置不同的连接池实现,如 HikariCP、C3P0 或者 DBCP。 5. **驱动程序管理**:在项目中,需要为每种数据库添加...
在这个“osgi数据库连接demo”中,我们将探讨如何在OSGi环境中配置C3P0作为Oracle数据库连接池,并集成iBATIS作为数据访问层。 首先,C3P0是一个开源的JDBC连接池,它提供了一些额外的功能,如自动管理数据库连接、...
iBatis本身并不包含数据库连接池,但可以与常见的数据库连接池如C3P0、DBCP或HikariCP等配合使用。数据库连接池负责管理数据库连接的创建、复用和释放,提高了系统的性能和资源利用率。 四、iBatis的映射机制 ...
Proxool是由iBatis团队开发的,其设计目标是提供一个简单易用、功能全面且性能优异的数据库连接池。与C3P0、DBCP、HikariCP等其他连接池相比,Proxool在小型项目或测试环境中表现出色,尤其适合那些对资源管理和性能...
7. 数据源集成:iBATIS可以轻松地与各种数据库连接池集成,如C3P0、Druid等,提供更高效的数据访问。 8. 与ORM框架的兼容:尽管iBATIS自身不完全属于ORM框架,但它可以与其他ORM框架如Hibernate配合使用,实现更...
- 配置数据库连接池,如C3P0或Druid,以提高数据库连接的复用性。 - 设置JDBC驱动,提供数据库URL、用户名和密码。 4. **实体类(Entity)** - 创建与数据库表对应的Java类,例如User.java,包含属性(字段)和...
4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接的复用性和性能。 综上所述,`ibatis+oracle`实例展示了如何利用Ibatis的灵活性和Oracle的强大功能进行数据库操作。...
例如,它可以与C3P0、DBCP等连接池配合使用。 4. 参数映射与结果映射:Ibatis提供了强大的参数映射和结果映射机制,能够自动将Java对象与SQL语句中的参数和查询结果进行匹配。通过`<parameterMap>`和`<resultMap>`...
**Proxool源码分析** Proxool是一个开源的、基于Java的数据库连接池,它在2003年由iBatis(现在...此外,通过对比其他知名的数据库连接池,如C3P0、HikariCP、Druid等,可以进一步拓宽对数据库连接池设计思路的认识。
c3p0 连接池参数包括最大活动连接数、最大空闲时间、自动提交等,用于优化数据库连接的管理和性能。 8. **Hibernate 配置**:虽然主要讨论的是 Axis2、iBatis 和 Spring,但文件中还提到了 Hibernate 的配置,如 ...
3. commons-dbcp.jar 或 c3p0.jar:这些是数据库连接池的实现,用于高效管理数据库连接。 4. mybatis-spring.jar:这是Spring与iBatis之间的桥梁,提供了将iBatis SqlSessionTemplate和SqlSessionFactoryBean集成到...
在iBATIS中,数据源是通过DataSource对象定义的,通常我们会在配置文件(如:SqlMapConfig.xml)中设置连接池参数,例如Druid或C3P0。同时,还需要配置数据库的连接信息,如URL、用户名和密码。 然后,我们需要创建...
在整合中,我们需要配置 C3P0 数据源,以便为应用程序提供高效的数据库连接管理。 5. **配置整合**:在 SpringMVC 配置文件中,需要添加 iBatis 相关的配置,如 SqlSessionFactoryBean、DataSource 等。同时,也...
在使用iBatis时,首先要创建数据库连接池,如C3P0或Druid,并在SqlMapConfig.xml中配置。然后,定义Mapper接口,每个方法代表一个数据库操作。接着,编写XML映射文件,设置SQL语句、参数映射和结果映射。最后,在...
iBatis可以方便地与第三方数据库连接池如C3P0, HikariCP等集成,提高数据库连接的复用性和性能。 通过学习和实践“iBatis-JPetStore-5.0”项目,你将能够掌握iBatis的基本使用,包括SQL映射、参数映射、结果映射、...
可以使用Apache的DBCP或C3P0等连接池实现,或者使用Spring的AbstractDataSource类。 4. **SqlSessionFactory配置**: 创建SqlSessionFactoryBean,它会根据配置文件(如`mybatis-config.xml`)创建...
在`jdbc.properties`和`c3p0.properties`中,存储了数据库连接的相关配置。`jdbc.properties`通常包含数据库驱动类名、数据库URL、用户名和密码等基本信息。`c3p0.properties`则是针对C3P0连接池的配置,如初始化...