MyBatis配置DBCP连接池属性报错,寻求兼容原属性的方案
解决方案
要在MyBatis 3.1.1中直接使用DBCP原生属性配置连接池,需修改数据源类型配置,具体步骤如下:
指定DBCP数据源实现类
在mybatis-config.xml的<dataSource>标签中,将type属性设置为DBCP的BasicDataSource全类名,替换默认的POOLED类型。示例配置如下:<dataSource type="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="你的数据库驱动类"/> <property name="url" value="你的数据库URL"/> <property name="username" value="数据库用户名"/> <property name="password" value="数据库密码"/> <!-- 保留你的DBCP原生属性配置 --> <property name="initialSize" value="5" /> <property name="testOnReturn" value="true" /> <property name="maxActive" value="30" /> <property name="maxIdle" value="5" /> <property name="maxWait" value="-1" /> <property name="testOnBorrow" value="true" /> <property name="testWhileIdle" value="true" /> <property name="removeAbandoned" value="true" /> <property name="removeAbandonedTimeout" value="60" /> <property name="logAbandoned" value="true" /> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <property name="minEvictableIdleTimeMillis" value="60000" /> <property name="validationQuery" value="select 1 from dual" /> <property name="numTestsPerEvictionRun" value="20" /> </dataSource>确认依赖完整性
确保项目中同时引入commons-dbcp-1.4.jar和其依赖的commons-pool-1.5.x系列jar包(比如commons-pool-1.5.6.jar),缺少commons-pool会导致DBCP无法正常初始化。
原因说明
你之前使用poolMaximumActiveConnections等属性能正常运行,是因为这些是MyBatis自带POOLED数据源的属性名,而非DBCP原生属性。MyBatis默认的POOLED类型是自身实现的连接池,并不兼容DBCP的配置规则。只有指定使用DBCP的BasicDataSource作为数据源类型,MyBatis才会直接调用DBCP的API,识别你配置的原生属性。
内容的提问来源于stack exchange,提问作者na_dev
相关产品推荐
相关产品推荐

