数据库连接池

数据库连接池

JDBC

1、JDBC的概念:
概念:通过Java代码操作数据库(,,,)
2、快速入门操作步骤:
A.导入jar包

B.注册驱动
	Class.forName("com.mysql.jdbc.Driver");

C.获取驱动
	String url = "jdbc:mysql://127.0.0.1:3306/ee";  //ee是数据库的名称
	Connection conn = DriverManager.getConnection(url, "root", "123");

D.获取操作对象
	Statement stat = conn.createStatement();

E.操作SQL
	 int num = stat.executeUpdate(sql);

F.释放资源
	stat.close();
	conn.close();

JDBC各个类的详细介绍

1、DriverManager 驱动管理
A.注册驱动
	原始的注册驱动的代码 Class.forName("com.mysql.jdbc.Driver");
	Driver底层代码采用的是 DriverManager.registerDriver(new Driver());
	
B.获取连接
	String url = "jdbc:mysql://127.0.0.1:3306/ee";  //ee是数据库的名称
	Connection conn = DriverManager.getConnection(url, "root", "123");

C.简化URL的写法(前提条件:连接的是自己本机数据库)
	String url = "jdbc:mysql:///ee";  //ee是数据库的名称,这里一共有3个/
	Connection conn = DriverManager.getConnection(url, "root", "123");
2、Connection 连接数据库
A.获取执行数据库的对象
	a.直接获取执行数据库的对象 		
		Statement stat = conn.createStatement();
	b.获取预置语句执行数据库对象	
		PrepareStatement ps = conn.prepareStatement(sql语句);
		
B.管理事务
	a.开启事务 
		conn.setAutoCommit(false); //false设置为手动提交事务.true设置为自动提交
	b.提交事务 
		conn.commit();
	c.回滚事务 
		conn.rollback();
3、Statement 操作数据库
A.更新操作(DML"对表记录的增删改"和DDL"对表和库的增删改") 
	int num = stat.executeUpdate("SQL语句");  //这里的SQL语句是增删改.返回的是影响几行
	
B.查询操作(DQL"对表记录的查询操作")
	ResultSet resu = stat.executeQuery("SQL查询语句"); //这里的SQL语句是查询语句 DQL
4、ResultSet 查询表结果集
A.判断是否还存在下一条数据
	boolean b = resu.next();  //如果存在下一条数据,返回值为true 不存在则返回false
	
B.获取结果集当中的数据
	a.通过查询到的结果集,索引值获取(索引值从1开始)
		int data01 = resu.getInt(1);  		//获取到的是查询结果集索引为1的int类型的数据
		String data02 = resu.getString(2);	//获取到的是查询结果集索引为2的String类型的数据
	b.通过查询到的结果集,列名称获取
		int data01 = resu.getInt("id");  		//查询结果集列名是id的int类型的数据
		String data02 = resu.getString("name");	//查询结果集列名是name的String类型的数据
5、PrepareStatement 操作数据库
A.获取预置操作
	select * from user where username = ? and password = ?;
	PreparedStatement ps = Connection.prepareStatement(sql); //通过预置对象,获取连接的操作

B.设置参数
	ps.setString(1,"root"); //参数1:第几个问号,参数2:对应预置的值
	ps.setString(2,"123");//参数1:第几个问号,参数2:对应预置的值
	
C.执行SQL语句
	ps.executeQuery();

JDBC的工具类

1、抽取的两个部分
A.连接Connection的对象
	Connection conn = DriverManager.getConnection(url, username, password); //返回conn
	
B.释放资源
	a.增删改 (释放 Connection 和 Statement)
	b.查询 (释放 Connection 和 Statement 和 ResultSet)
2、准备数据
A.四个配置文件的数据(对应的就是静态成员变量)
	url=jdbc:mysql://127.0.0.1:3306/ee   
	username=root
	password=123
	driver=com.mysql.jdbc.Driver
	
B.静态代码块
	a.赋值静态成员变量(类的加载器"获取配置文件路径",Properties"通过配置文件路径,获取四个值")
	b.注册驱动  Class.forName(driver);
3、使用工具类
Connection conn = JDBCUtils.getConnection(); //获取连接对象
JDBCUtils.close(resu,stat,conn);

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  //MySQL数据库的驱动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(pp);
	c.获取连接
		Connection conn = ds.getConnection();

JDBCTemplate

1、含义
由三大框架的 Spring 框架封装的JDBC操作.又称为"JDBCTemplate"
2、操作步骤
A.准备工作
	1.导入jar包
		a.与JDBCTemplate相关的jar包
			commons-logging-1.2.jar
			spring-beans-5.0.0.RELEASE.jar
			spring-core-5.0.0.RELEASE.jar
			spring-jdbc-5.0.0.RELEASE.jar
			spring-tx-5.0.0.RELEASE.jar
		b.需要有连接池的jar包(在C3P0和Druid当中二选一)
			druid-1.0.9.jar
		c.需要数据库连接的jar包
			mysql-connector-java-5.1.37-bin.jar
	2.准备连接池的配置文件 druid.properties
			driverClassName=com.mysql.jdbc.Driver
        	url=jdbc:mysql://127.0.0.1:3306/java68db02
        	username=root
        	password=123
        	initialSize=5
        	maxActive=10
        	maxWait=3000
     3.准备工具类
     	获取连接池的对象
     	public static DataSource getDataSource() {
            return datasource;
        }
	
B.创建对象
	JdbcTemplate temp = new JdbcTemplate(ds); //ds是DataSource 连接池
	
C.调用方法
	a.DML的方法
		update() 执行"增,删,改"的操作
	b.DQL的方法
		query() 将查询的结果封装成为 JavaBean (标准学生类) 
		queryForObject() 将查询的结果封装成为对象 "用于聚合函数的查询"
		queryForList() 将查询的结果封装成为List集合 "查询的是多条记录,封装成为List<Map>"
		queryForMap() 将查询的结果封装成为Map集合"查询的是一条记录,封装成为Map"
    
//案例代码:  ZFBBean 是JavaBean的对象【成员变量是包装类类型,名称和数据库列名称相同】
List<ZFBBean> mList = temp.query(sql, new BeanPropertyRowMapper<ZFBBean>(ZFBBean.class));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值