MyBatis配置C3P0连接池:

MyBatis虽自带连接池POOLED,但是我们不推荐使用,推荐使用诸如C3P0之类的市面上的主流连接池

1. 导入依赖

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.4</version>
</dependency>

2,创建C3P0与MyBatis兼容的数据源工厂类(其它连接池同理)

src/main/java/top/xiongmingcai/datasource/C3P0DataSourceFactory.java

/**
 * C3P0与mybatis兼容使用的数据源工厂类
 */
public class C3P0DataSourceFactory extends UnpooledDataSourceFactory {
    public C3P0DataSourceFactory() {
        this.dataSource = new ComboPooledDataSource();
    }
}

3,修改mybatis-config.xml文件

<environment id="c3p0">
<transactionManager type="JDBC"/>
<dataSource type="top.xiongmingcai.datasource.C3P0DataSourceFactory">
    <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
    <property name="jdbcUrl"
              value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=GMT"/>
    <property name="user" value="root"/>
    <property name="password" value="NewPassword"/>
    <property name="initialPoolSize" value="5"/>
    <property name="maxPoolSize" value="20"/>
    <property name="minPoolSize" value="5"/>
</dataSource>
</environment>

启动C3P0连接池

完成了前面的准备工作和信息配置,下面就正式进入连接池的操作了。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;     
import com.mchange.v2.c3p0.ComboPooledDataSource;  
    
    /** 
     * 数据库工具类 
     * @author cloud 
     * 
     */  
    public class C3P0Util {  
        static ComboPooledDataSource cpds=null;  
        static{  
            cpds = new ComboPooledDataSource();//这是mysql数据库  
        }  
        /** 
         * 获得数据库连接 
         * @return   Connection 
         */  
        public static Connection getConnection(){  
            try {  
                return cpds.getConnection();  
            } catch (SQLException e) {  
                e.printStackTrace(); 
                System.out.println("连接失败");
                return null;  
            }  
        }  
          
        /** 
         * 放回连接对象,close方法并不是关闭,而是更改该连接对象的状态为可用。 
         * @param conn   
         */  
        public static void close(Connection conn){  
            if(conn!=null){  
                try {  
                    conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
}