Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)

Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)

  • Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)
    • 一:连接池概述
      • 1)开发背景:
      • 2)概述
      • 3)规定(规范)
    • 二: Jdbc工具类——JdbcUtils![在这里插入图片描述](https://img-blog.csdnimg.cn/20200519171133554.png)
      • 1)作用:
      • (2)C3P0Utils中的方法与内容
      • (3)DBCP连接池(了解即可)
        • 1.静态代码块里:
        • 2.方法:
    • 三:测试(使用)C3P0 DBCP连接池
    • 四:DBUtils
    • 五:案例
      • 1.DBUtils 完成更新操作
      • 2.DBUtils 完成查询操作

Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)

一:连接池概述

1)开发背景:

实际开发中呢,每次获取Connection和释放掉都是消耗系统资料的两个过程。所以我们采用连接池技术,来“共享”这些Connection。

2)概述

用pool来管理Connection这样我们便可以重复使用这些Connection。并且使用时直接获取,用完后,调用改写的(@Override)close方法也不会真正的关闭Connection,而是把这些Connection放回pool中,实现pool中对象的反复利用。private static LinkedList pool = new LinkedList();一般我们使用集合来存储Connection对象
Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第1张图片

3)规定(规范)

Java为数据库连接池提供了interface :javax.sql.DataSource,实现这个接口才能使用连接池 **public class MyDataSource implements DataSource {}**一般常用的连接池有DBCP,C3P0

二: Jdbc工具类——JdbcUtilsJava Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第2张图片

1)作用:

获取Connection对象,开启和关闭事务,所以这个工具类用到连接mysql的驱动jar包,涉及c3p0连接池,所以还需要导入c3p0的jar包,以及c3p0-config.xml配置文件
Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第3张图片

(2)C3P0Utils中的方法与内容

先写一个静态的代码块来加载配置文件的信息,然后书写获取连接和释放资源的方法
Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第4张图片
C3P0提供一个核心的工具类 叫做ComboPooledDataSource,使用连接池的话必须创建其对象。

new ComboPooledDataSource(里面是config的name),不填则是默认配置,及
Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第5张图片

(3)DBCP连接池(了解即可)

DBCP也是一个连接池,Tomcat内置的连接池

涉及的jar包:Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第6张图片
同理,DBCP也需要配置文件
里面包含:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/“Database name”?useUnicode=true&characterEncoding=utf8
username=root
password=root

同理工具类代码如下:

1.静态代码块里:

先通过类加载器加载出一个properties文件的输入流 InputStream

然后通过Properties对象来加载(运行)这个输入流 props.load(is)

最好创建出一个新的数据源存储Connection。

dataSource = BasicDataSourceFactory.createDataSource(props);

2.方法:

(1)获取数据源(pool)的方法 getDataSource()

(2)获取Connection的方法 getConnection()Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第7张图片

三:测试(使用)C3P0 DBCP连接池

案例:使用C3P0或DBCP连接池 添加数据Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第8张图片
使用C3P0Utils先获取连接 getConnection 然后更新操作。

同理DBCPUtils.getConnection();获取连接,然后操作。

四:DBUtils

使用JDBC你会发现 代码太过多余,每次操作多会有很多相同的操作。Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第9张图片
DBUtils则是JDBC简化的开发工具包,其中需要使用的技术有:连接池(获得连接),SQL语句也不能少。

封装了对JDBC的操作并且简化了其操作,可以少写代码。

一个概念--------JavaBean组件

JavaBean是一个类,用来封装数据,提供有getter setter方法。

DButils 三个核心功能介绍

QueryRunner 中提供了对sql语句操作的API

ResultSetHandler接口 ,用于定义select(查询)操作后,怎么封装结果集

DbUtils类,工具类,定义了处理方法。

(1)QueryRunner 核心类:

提供了数据源 QueryRunner (DataSource ds),及连接池,DBUtils底层自动维护和连接Connection

update(String sql,Object …params),执行更新的数据。

params是为占位符所设置值的集合

例如Object[] params = { “username”, “password” };

query(String sql,ResultSetHandlerrsh,Object…params),执行查询操作

例如List users = qr.query(sql, new BeanListHandler(User.class));

而BeanListHandler是上面ResultSetHandler的结果集处理类,作用是将每一条(因为是查询操作)记录封装到指定的javabean里面,将这些javabean再封装到List集合里。

BeanHandler只是将第一条记录装到指定javabean里面(前面加List则循环往复)。

(2)DBUtils工具类
closeQuirty(Connection conn)关闭连接
commitAndCloseQuiety(Connection conn)提交并关闭连接
rollbackAndCloseQuiety(Connection conn)回滚并关闭

五:案例

1.DBUtils 完成更新操作

Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第10张图片

2.DBUtils 完成查询操作

Java Web学习三:JDBC连接池&DBUtils(简化JDBC的工具包)_第11张图片

你可能感兴趣的:(JavaWeb)