(14)JDBC、dbcp、dbutils

一,jdbc

原理图

JDBC API

DriverManager

驱动管理器

根据不同的数据库加载不同的驱动

方法

获得连接对象

Connection getConnection(数据库服务器地址,数据库名称,账号,密码)

Connection

连接对象

建立和数据库的连接

方法1

获得SQL语句对象

Statement  createStatement()

方法2

获得加强版SQL语句对象

PreparedStatement preparedStatement(String sql)

Statement/PreparedStatement

sql命令对象(select,insert,update,delete)

方法1

执行增删改,返回受影响的行数

int  executeUpdate()

方法2

执行查询,结果集(对应了select查询出来的临时表)

ResultSet  executeQuery()

ResultSet

代表执行select语句后的结果,结果集

方法1

boolean  next(),还有没有下一行数据,有的话就返回true

方法2

Xxx  getXxx(o),将结果集中o这列数据,读取成java中的Xxx类型数据

基本操作

添加数据

项目结构

添加目录lib,存放依赖的jar文件

注意,MySQL5的驱动是5.x,MySQL对应的驱动是8.x

添加引用

编写代码

添加一条数据

类似打电话找老师请假的步骤

找到电话

电话号码

拨打接通

说话请假

反馈得到结果

关断电话

修改数据

删除

查询

练习

有admin数据表

编写jdbc操作,实现输入账号,密码后进行登录,显示登录结果(成功和失败)

参考

sql注入

正常情况下

再尝试注入sql

Statement对象,只能使用字符串拼接,进行参数设定,容易被sql注入攻击

使用升级版PreparedStatement

代码

结果

二,jdbc代码升级

异常处理

升级前

代码

结果

升级后

代码

结果

代码冗余

连接数据库代码,获得连接的代码全都一样,冗余

增删改代码特别像,可以写成一个方法

释放资源代码,也都一样,统一处理

BaseDao

结合对象

数据库

属于“关系模型”,描述的是表间关系

java

属于“对象模型”,描述的是对象间关系

XxxDao

注意:

一般的dao,都会有这5个基本的数据操作方法

测试1

测试2

练习

编写Emp类和EmpDao类,并测试

三,数据库连接池

之前的conn的使用方式

创建conn-->打开conn-->使用conn-->关闭conn

四步走,一步也不能少

其中创建,打开,关闭,都是最耗资源的

jdbc/dao操作都很频繁,需要频繁的创建,打开,关闭效率很低,引入了“连接池”

连接池的思路

在“池”(集合)中,放入若干已经创建并打开过的连接,用的时候直接拿来用,用完之后,不用关闭, 放回池中即可,下次再用,直接拿

注意

连接池在市面上有很多,dbcp,c3p0,druid(阿里),代码不是关键,关键要理解连接池的原理

自己实现连接池

synchronized

在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile

                          

测试

结果

四,dbcp

配置文件

内容

连接池工具类

DataSource

测试

结果

五、DBUtils  

之前的jdbc操作比较繁琐,很多都能统一处理,DBUtils是在我们学习MyBatis之前,适合

所有资料

其中

是核心jar

核心类

QueryRunner

构造方法

方法

ResultSetHandler

把结果集自动变成一个po类

把结果集自动变成一个List<PO>集合

DeptDao

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值