• C3P0数据源配置


    一:添加依赖

    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
    <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>${c3p0.version}</version>
            </dependency>

    二:添加配置默认二种方式配置文件,XML。在源码com.mchange.v2.c3p0.cfg包下

    2.1:c3p0.properties

    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test
    username=root
    password=
    
    initialPoolSize=10
    maxIdleTime=50
    maxPoolSize=20
    minPoolSize=5

    2.2:c3p0-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
     
    <c3p0-config>
      <default-config>   
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/dev</property>
        <property name="user">root</property>
        <property name="password"></property>
     
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
      </default-config>
     
      <named-config name="mySource">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
        <property name="user">root</property>
        <property name="password"></property>
     
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
      </named-config>
    </c3p0-config>

    三:配置数据源

    package com.jachs.c3p0.config;
    
    import java.beans.PropertyVetoException;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import com.mchange.v2.c3p0.cfg.C3P0ConfigUtils;
    
    /***
     * 
     * @author zhanchaohan
     *
     */
    public class C3p0Utill {
        
        /***
         * 加载Properties方式初始化数据源
         * @return
         * @throws FileNotFoundException
         * @throws IOException
         * @throws PropertyVetoException 
         * @see C3P0ConfigUtils
         */
        public ComboPooledDataSource initProperties() throws FileNotFoundException, IOException, PropertyVetoException {
            
            Properties properties=C3P0ConfigUtils.findResourceProperties();
            
            
            ComboPooledDataSource cpds=new ComboPooledDataSource();
            
    //        cpds.setProperties(properties);//不起作用
            
            cpds.setDriverClass(properties.getProperty("driverClassName"));
            cpds.setJdbcUrl(properties.getProperty("url"));
            cpds.setUser(properties.getProperty("username"));
            cpds.setPassword(properties.getProperty("password"));
            
            cpds.setInitialPoolSize(Integer.parseInt(properties.getProperty("initialPoolSize")));
            cpds.setMaxIdleTime(Integer.parseInt(properties.getProperty("maxIdleTime")));
            cpds.setMaxPoolSize(Integer.parseInt(properties.getProperty("maxPoolSize")));
            cpds.setMinPoolSize(Integer.parseInt(properties.getProperty("minPoolSize")));
            
            return cpds;
        }
        /***
         * 
         * @return
         * @see C3P0ConfigXmlUtils
         */
        public ComboPooledDataSource initXML() {
    //        ComboPooledDataSource cpds=new ComboPooledDataSource("mySource");
            ComboPooledDataSource cpds=new ComboPooledDataSource();//不给参数使用默认数据源
            return cpds;
        }
    }

    四:测试

    package com.jachs.c3p0.config;
    
    import java.beans.PropertyVetoException;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    /***
     * 
     * @author zhanchaohan
     *
     */
    public class C3P0Test {
        private C3p0Utill c3p0Utill = new C3p0Utill();
    
        ComboPooledDataSource prCpds;
        ComboPooledDataSource xmlCpds;
    
        @Before
        public void init() throws FileNotFoundException, IOException, PropertyVetoException {
            prCpds = c3p0Utill.initProperties();
            xmlCpds = c3p0Utill.initXML();
        }
    
        @Test
        public void tetcPrCpds() throws SQLException {
            Connection connection = prCpds.getConnection();
    
            ResultSet resultSet = connection.prepareStatement("show tables").executeQuery();
    
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
        }
        @Test
        public void tetcxmlCpds() throws SQLException {
            Connection connection = xmlCpds.getConnection();
    
            ResultSet resultSet = connection.prepareStatement("show tables").executeQuery();
    
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
        }
    }
  • 相关阅读:
    IDE IntelliJ IDEA ToolsTable 窗口找回
    Equals方法与“==”区别
    JAVA虚拟机内存分配与回收机制(转)
    java集合框架总结三--Set接口及其子类
    2014年4月5日 java集合框架总结2--List接口及其子类
    java集合框架总结一
    sql 操作数据库
    EF框架用中使用mysql数据库需要安装mysql-for-visualstudio
    mysql 服务启动不了;无法启动MYSQL服务”1067 进程意外终止”解决办法
    mysql 修改密码
  • 原文地址:https://www.cnblogs.com/zhanchaohan/p/14694616.html
Copyright © 2020-2023  润新知