本知识点演示单纯的Mybatis整合C3P0数据库连接池,不是SSM的那种整合方式
- 下载JAR包
c3p0-0.9.1.2.jar - 导入项目
把jar包导入到项目中,导包办法:右键 project->properties->java build path->libaries->add external jars
- 新建类C3P0DataSourceFactory
Mybatis使用C3P0有点怪怪的,需要自己写个类继承UnpooledDataSourceFactory,然后指定dataSource 为ComboPooledDataSource。
这个ComboPooledDataSource就是c3p0的数据源。
package org.mybatis.c3p0; import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0DataSourceFactory extends UnpooledDataSourceFactory{ public C3P0DataSourceFactory(){ this.dataSource =new ComboPooledDataSource(); } }
- 配置 mybatis-config.xml
注释掉type="POOLED"的数据源,换成type="org.mybatis.c3p0.C3P0DataSourceFactory"的数据源
这样就使用c3p0了。 - 测试
随便运行前面知识点的任意测试类即可。
作为数据库连接池,无法在小规模访问里看到其效果,需要高并发才能体现出其效果,这里的测试代码只能表示正常运行,无法体现其优越性。
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Category; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); List<Category> cs =session.selectList("listCategory"); for (Category c : cs) { System.out.println(c.getName()); } session.close(); } }