首先,要导包:
c3p0-0.9.2.1.jar(c3p0核心包)
mchange-commons-java-0.2.3.4.jar(c3p0数据库连接池的辅助包,没有这个包系统启动的时候会报classnotfoundexception,这是c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是一个包就搞定的)
mysql-connector-java-5.1.7-bin.jar(mysql驱动包)
第二步:编写一个c3p0.properties
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql:///ssm
c3p0.user=root
c3p0.password=123
c3p0.maxPoolSize=20
c3p0.minPoolSize=3
c3p0.maxStatements=30
c3p0.maxIdleTime=150
第三步:自定义一个连接池类
public class C3P0DataSource extends UnpooledDataSourceFactory {
public C3P0DataSource() {
this.dataSource = new ComboPooledDataSource();
}
}
第四步:在mybatis-config.xml(核心配置文件)中配置
<properties resource="c3p0.properties" />//引入外部properties文件
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="com.itheima.pool.C3P0DataSource">
<property name="driverClass" value="${c3p0.driverClass}"/>
<property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>
<property name="user" value="${c3p0.user}"/>
<property name="password" value="${c3p0.password}"/>
</dataSource>
</environment>
</environments>
第五步:测试
List<User> list = userMapper.findAll();
for (User user : list) {
System.out.println(user);
}
我在测试的时候出现
Could not load driverClass com.mysql.jdbc.Driver
Access denied for user 'root '@‘localhost’ (using password: YES)
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
但是我朋友运行起来不报错,我的mysql版本是5+,而他的是8+,但是我把mybatis-config.xml中的DataSource中的properties全部删掉之后,也能正常运行,查了一下,在不写的时候,程序也可以加载到属性文件(c3p0.properties)中的内容。