文章目录

  • 连接池
  • 连接池简述及原理
  • 连接池简述及原理
  • DBCP连接池
  • 连接池的使用
  • 配置文件导入
  • 编写连接池工具
  • 常见配置项
  • C3P0连接池
  • 导入jar包
  • 配置文件引入
  • 编写连接池工具---命名配置
  • 常见配置项
  • DBUtils工具
  • DBUtils核心类-QueryRunner创建
  • 使用DBUtils核心类完成数据更新操作
  • 使用DBUtils核心类完成数据查询操作
  • JavaBean
  • BeanHandler
  • BeanListHandler
  • MapHandler
  • MapListHandler
  • ScalarHandler
  • 事务
  • 事务的应用场景说明
  • 操作事务
  • 手动提交事务使用步骤:
  • 回滚点
  • 事务的四大特性(ACID)
  • 分层思想
  • 分层


连接池

连接池简述及原理

原始:

mysql 数据库连接池和线程池_配置文件


连接池:

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_02

连接池简述及原理

DataSource 由厂商去实现
市面上常见的几种连接池:
DBCP连接池、C3p0连接池、Druid连接池(阿里)

DBCP连接池和c3p0连接池的对比:

Dbcp:效率高,但是安全性一般
C3p0:安全性很高,效率偏低

DBCP连接池

DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。

DBCP连接池目前市面上极为高效的连接池。
DBCP连接池一秒钟可以创建并传递10万个左右的连接对象。

DBCP安全性并不高,有可能在高速运转丢失连接数据

连接池的使用

导入jar包:

mysql 数据库连接池和线程池_连接池_03


mysql 数据库连接池和线程池_配置文件_04

配置文件导入

配置文件名称:*.properties

配置文件位置:可存放任意目录,但开发建议src根目录

配置文件内容:properties尽量不要在eclipse中编写中文,容易乱码。如果需要写入中文,建议使用记事本修改内容,可以解决中文乱码问题

mysql 数据库连接池和线程池_连接池_05

编写连接池工具

mysql 数据库连接池和线程池_封装_06


mysql 数据库连接池和线程池_封装_07

常见配置项

mysql 数据库连接池和线程池_封装_08


mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_09


mysql 数据库连接池和线程池_连接池_10

C3P0连接池

C3P0开源免费的连接池!目前使用它的开源项目有:Spring、Hibernate(mybatis)等。
spring全家桶:spring、springmvc、springdata、springboot、springCloud
项目分成:(MVC模式)
Web:springmvc
业务层:service
dao层:专门和数据库打交道

使用第三方工具需要导入jar包,c3p0使用时还需要添加配置文件 c3p0-config.xml

导入jar包

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_11


mysql 数据库连接池和线程池_配置文件_12

配置文件引入

配置文件名称:c3p0-config.xml (固定)

配置文件位置:src (类路径)

mysql 数据库连接池和线程池_连接池_13


mysql 数据库连接池和线程池_配置文件_14

编写连接池工具—命名配置

mysql 数据库连接池和线程池_连接池_15

常见配置项

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_16


mysql 数据库连接池和线程池_配置文件_17


mysql 数据库连接池和线程池_配置文件_18

mysql 数据库连接池和线程池_连接池_19

DBUtils工具

DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Dbutils三个核心功能介绍

  1. QueryRunner中提供对sql语句操作的API.(CRUD增删改查)
  2. ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
  3. DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法(事务)

导入一系列jar包:

mysql 数据库连接池和线程池_封装_20


mysql 数据库连接池和线程池_配置文件_21


mysql 数据库连接池和线程池_配置文件_22


mysql 数据库连接池和线程池_封装_23


导入配置文件 放在src目录下:

mysql 数据库连接池和线程池_配置文件_24

DBUtils核心类-QueryRunner创建

  1. 自动模式:
  2. 手动模式:

使用DBUtils核心类完成数据更新操作

mysql 数据库连接池和线程池_封装_25


mysql 数据库连接池和线程池_封装_26

使用DBUtils核心类完成数据查询操作

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_27

mysql 数据库连接池和线程池_封装_28


ResultSetHandler 结果集处理程序 ----定义好的接口

mysql 数据库连接池和线程池_配置文件_29


mysql 数据库连接池和线程池_配置文件_30

JavaBean

JavaBean是满足一个特殊格式的Java类。

作用:就是封装数据。

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_31

BeanHandler

应用:根据商品id查询商品、根据用户名密码查询用户

单表查询-封装伪表的第一行数据,会把伪表的第一行数据封装到一个JavaBean中。

mysql 数据库连接池和线程池_封装_32

会直接使用伪表的字段名 和 setXxx 中 xxx进行对应。 setPid setPname setPrice

如果对应上,正常封装。

否则忽略该数据。

mysql 数据库连接池和线程池_配置文件_33

BeanListHandler

单表查询-封装所有查询数据

mysql 数据库连接池和线程池_配置文件_34


mysql 数据库连接池和线程池_封装_35

MapHandler

多表查询-封装整个伪表的第一条数据。封装成一个map集合 map<String,Object>

Key:字段名

Object:字段值

mysql 数据库连接池和线程池_连接池_36


mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_37

MapListHandler

多表查询-将整个伪表数据封装起来。 一行一个map, List

mysql 数据库连接池和线程池_配置文件_38


mysql 数据库连接池和线程池_连接池_39

ScalarHandler

用于SQL语句运算返回并封装单值----Object

mysql 数据库连接池和线程池_封装_40


mysql 数据库连接池和线程池_配置文件_41

事务

事务的应用场景说明

在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次 访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。 例如: jack给tom转账,jack账号减钱,tom账号加钱

操作事务

MYSQL中可以有两种方式进行事务的操作:

自动提交事务:默认

手动提交事务:

mysql 数据库连接池和线程池_mysql 数据库连接池和线程池_42

手动提交事务使用步骤:

mysql 数据库连接池和线程池_封装_43

回滚点

概述:在某些成功的操作完成之后,后续的操作有可能成功有可能失败,但是不管成功还是失败,前面操作都已经成功, 可以在当前成功的位置设置一个回滚点。可以供后续失败操作返回到该位置,而不是返回所有操作,这个点称之为 回滚点。
设置回滚点语法:
savepoint 回滚点名字
回到回滚点语法:
rollback to 回滚点名字

事务的四大特性(ACID)

mysql 数据库连接池和线程池_连接池_44

分层思想

mysql 数据库连接池和线程池_封装_45

mysql 数据库连接池和线程池_封装_46

分层

包结构 包名:公司域名的倒写

Com.offcn.domain 实体层(用于封装数据)
Com.offcn.web 控制层(控制和页面数据交互的一层)
Com.offcn.service 业务层(专门写业务)
Com.offcn.dao 数据访问层(专门和数据库打交道)
Com.offcn.utils 专门存放工具类