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/heima</property>
    <property name="user">root</property>
    <property name="password">root</property>
    
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">10</property>
    <property name="checkoutTimeout">3000</property>
  </default-config>

  <named-config name="otherc3p0"> 
  </named-config>
</c3p0-config>
package com.itheima.utils;

import java.io.IOException;
import java.sql.*;
import java.util.Properties;

//自定义的JDBC工具类, 结合配置文件使用.
public class JDBCUtils2 {
    //1. 构造方法私有化.
    private JDBCUtils2(){}

    //2. 定义一些私有的静态的成员变量, 用来记录配置文件中的信息.
    private static String driverClass;
    private static String url;
    private static String username;
    private static String password;

    //3. 定义方法loadProperties(), 用来读取配置文件, 并将读取到的数据赋值给变量.
    public static void loadProperties() {
        //3.1 定义Properties集合
        Properties pp = new Properties();
        //3.2 加载配置文件中的文件到集合中.
        try {
            pp.load(JDBCUtils2.class.getClassLoader().getResourceAsStream("config.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        //3.3 给成员变量赋值.
        driverClass = pp.getProperty("driverClass");
        url = pp.getProperty("url");
        username = pp.getProperty("username");
        password = pp.getProperty("password");
    }

    //4. 通过静态代码块, 用来注册驱动.
    static {
        try {
            //核心细节: 方法只有被调用, 才会执行.
            //调用loadProperties()方法, 读取配置文件.
            loadProperties();
            //注册驱动.
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //5. 对外提供一个公共的访问方式, 用来获取: 连接对象.
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url, username,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    //6. 释放资源.
    public static void release(Connection conn, Statement stat, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
                rs = null;       //GC会优先回收null对象.
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (stat != null) {
                    stat.close();
                    stat = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void release(Connection conn, Statement stat) {
        try {
            if (stat != null) {
                stat.close();
                stat = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值