一、作用:
存放数据库连接的一个容器。
二、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);
}
}