数据库连接池入门

一、作用:

                存放数据库连接的一个容器。

二、3种连接池:

1、C3P0连接池:

        1、使用步骤:

                ①导入jar包:c3p0-0.9.5.2.jarhe和mchange-commons-java-0.2.11.jar

                ②定义配置文件:C3P0-config.xml(放在src下面)

                        

        2、直接创建工具类C3P0_Utils

package day02.day02_C3P0;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

//导包在src下
public class C3P0_Utils {
//    单例模式
     private static DataSource dataSource;
     static {
       dataSource=new ComboPooledDataSource();//
    }

    public static DataSource getDataSource(){
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }


}

2、Druid连接池:

        1、连接步骤:

                ①导入jar包:druid-1.1.16.jar

                ②加载配置文件:druid.properties

                

                ③获取数据库连接池连接对象:通过工厂获取DruidDataSourceFactory

DataSource ds = DruidDataSourceFactory.createDataSource(pros);

                 ④获取连接: getConnection();

dataSource.getConnection();

        2、直接创建工具类Druid_Utils:

                

package day02.day02_Druid;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class Utlis2 {

private static String  driverClassName=null;
private static String url=null;
private static String username=null;
private static String password=null;
private static Properties properties=null;

static {//加载配置文件load
     properties=new Properties();
    try {
        properties.load(Utlis2.class.getResourceAsStream("druid.properties"));
    } catch (IOException e) {
        e.printStackTrace();
    }
    //把配置文件的关键字分配

    driverClassName=properties.getProperty("driverClassName");
    url=properties.getProperty("url");
    username=properties.getProperty("username");
    password=properties.getProperty("password");
}

    public static DataSource getDataSource(){
        DataSource dataSource=null;
        try {
            dataSource=DruidDataSourceFactory.createDataSource(properties);//配置文件
            dataSource.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return dataSource;
    }

    public static Connection getConnection(){
    Connection connection=null;
        try {
            Class.forName(driverClassName);//加载驱动
            connection= DriverManager.getConnection(url,username,password);//建立连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

3、DBCP连接池:与Druid类似。

        只不过工厂是BasicDataSourceFactory

DataSource dataSource = BasicDataSourceFactory.createDataSource(pros);

 三、JDBCTemplate

        1、概念:

                通过SQL语句+参数,提供了模板化编程。是spring里的一个对象。

        2.使用步骤:

                ①导入jar包

                

                ②创建JdbcTemplate对象。依赖于数据源 DataSource();

                

JdbcTemplate template = new JdbcTemplate(ds);

                 ③调用JdbcTemplte中的方法来实现增删改查。

                update(): DML语句。实现 增删改

                QueryForMap():DQL语句 实现查                                                        

package day02.day02_JdbcTmeplate;

import day02.day02_C3P0.C3P0_Utils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class demo7 {
    public static void main(String[] args) {
        JdbcTemplate jdbcTemplate=new JdbcTemplate(C3P0_Utils.getDataSource());

        //增
//        String sql="insert into userlist(telephone,account,rent) values(?,?,?)";
//        jdbcTemplate.update(sql,4210005,"DDDD",250);

        //删
        String sql="delete from userlist where account=?";
        jdbcTemplate.update(sql,"AAAA");
        //改
        sql="update userlist set rent=1000 where account=?";
        jdbcTemplate.update(sql,"BBBB");
        //查
        sql="select *from emp where empon=?";
        List<Emp> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Emp.class),7876);
        System.out.println(list);

        sql="select count(*)from emp ";

        String s = jdbcTemplate.queryForObject(sql, String.class);
        System.out.println(s);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值