JDBC连接池、JDBCTemplate

JDBC连接池、JDBCTemplate

一、JDBC连接池

1、概念和好处
A.概念: 
    就是一个集合,集合当中存放有多个数据库的连接对象 Connection的对象.(可借可还)
B.好处:
    a.节约系统资源   
    b.提升连接效率
2、常见的连接池
A.标准连接池:
     javax.sql.DataSource 通用的方法 
     a.getConnection() 获取连接池的操作
     b.close() 归还连接池的操作(归还不是释放资源)
B.其他框架的连接池 
     a. C3P0 数据库连接池 
     b. Druid 阿里的连接池
3、C3P0连接池的操作步骤
A.准备工作
    a.导入jar包 
        c3p0-0.9.5.2.jar  
        mchange-commons-java-0.2.12.jar
        mysql-connector-java-5.1.37-bin.jar
    b.配置文件(写在src文件夹目录下面,名称必须叫以下的名称) 二者选其一 
        c3p0.properties 
        c3p0-config.xml   
B.编写代码的操作 
    a.创建对象  
        DataSource ds  = new ComboPooledDataSource(); 
    b.获取连接
        Connection conn = ds.getConnection();
4、Druid连接池的使用
A.准备工作
    a.导入jar包   
        druid-1.0.9.jar  
        mysql-connector-java-5.1.37-bin.jar 
    b.配置文件(写在src文件夹目录下面)  
        driverClassName=com.mysql.jdbc.Driver 
        url=jdbc:mysql:///db3
        username=root 
        password=root  
        initialSize=5 
        maxActive=10 
        maxWait=3000 
B.编写代码的操作
    a.加载配置文件的数据 Properties  
        Properties pp = new Properties(); 
        InputStream is = 当前 类.class.getClassLoader().getResourceAsStream(配置文件的名称); 
        pp.load(is); 
    b.获取连接池的对象   
        DataSource ds = DruidDataSourceFactory.createDataSource(pro);
    c.获取连接   
        Connection conn = ds.getConnection();
5、工具类
/**
 * 工具类
 */
public class JDBCUtils {
    //1.一个连接池的对象(成员变量)
    private static DataSource ds;
    //2.静态代码块(获取到连接池的对象)
    static {
        try {
            //a.加载配置文件的数据 Properties
            Properties pp = new Properties();
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pp.load(is);
            //b.获取连接池的对象
            ds = DruidDataSourceFactory.createDataSource(pp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //3.得到连接的对象
    public static DataSource getDataSource() {
        return ds;
    }
    //4.释放资源的代码(对于Connection而言,他是归还)
    public static Connection getConn() throws SQLException {
        return ds.getConnection();
    }

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

        if (stat != null) {
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(Statement stat, Connection conn) {
        close(null, stat, conn);
    }

}

二、JDBCTemplate

1、含义
由三大框架的 Spring 框架封装的JDBC操作.又称为"JDBCTemplate"
2、操作步骤
A.准备工作 
    导入jar包  
B.创建对象 
    JdbcTemplate temp = new JdbcTemplate(ds); //ds是DataSource 连接池  
C.调用方法 
    a.DML的方法  
       update() 执行"增,删,改"的操作
    b.DQL的方法  
       query() 将查询的结果封装成为 JavaBean (标准学生类) 
       注意:ZFBBean 是JavaBean的对象【成员变量是包装类类型,名称和数据库列名称相同】
            List<ZFBBean> mList = temp.query(sql, new BeanPropertyRowMapper<ZFBBean>(ZFBBean.class));
       queryForObject() 将查询的结果封装成为对象 "用于聚合函数的查询" 
       queryForList() 将查询的结果封装成为List集合 "查询的是多条记录,封装成为List"
       queryForMap() 将查询的结果封装成为Map集合"查询的是一条记录,封装成为Map"

你可能感兴趣的:(JDBC连接池、JDBCTemplate)