适合有编程基础的人看的《韩顺平零基础30天学java》笔记(P821~P856)JDBC

写在最前边:

研究生一枚,为后端实习和未来工作打基础。无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了。
韩顺平老师课程地址:https://www.bilibili.com/video/BV1fh411y7R8?spm_id_from=333.999.0.0
阅读提醒:本笔试适合有编程语言基础的伙伴阅读,因为本兔兔是本专业的,有c、c++、python 、sql基础,笔记中特别的基础的内容就没有记录。完全零基础的小伙伴建议跟着韩老师的课程自己记录。

Java 基础

第三阶段 分析需求、提高代码实现能力

第四章JDBC和连接池

在这里插入图片描述

一、概念
1、JDBC是什么?

在这里插入图片描述

2、JDBC原理示意图

在这里插入图片描述

二、JDBC快速入门
1、简单的编写步骤

在这里插入图片描述
在这里插入图片描述

代码实现在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
三、获取数据库连接的5种方式
1、使用Driver()静态加载不灵活

在这里插入图片描述

2、使用Driver类的反射更加灵活

在这里插入图片描述

3、使用DriverManager类 ==驱动管理,便于统一管理,更加灵活嘤 ==
4、使用Class.forName完成自动注册比3更加简化代码,不用创建Driver类推荐使用

在这里插入图片描述
在这里插入图片描述

细节:在这里插入图片描述
5、使用配置文件 对 方法4 的优化

在这里插入图片描述
在这里插入图片描述

四、ResulSet 理解为指向数据库select查询返回结果的指针
1、 是什么?

在这里插入图片描述

2、使用方法

在这里插入图片描述

3、ResulSet 的存储结构在这里插入图片描述
五、Statement
1、是什么?
执行SQL语句的并返回其执行的结果
2、类型
  • Statement存在SQL注入问题,实际开发不用这个
    SQL注入:利用Statement的字符串拼接漏洞
    在这里插入图片描述
  • PreparedStatement 【预处理】
  • CallableStatement 【存储过程】
3、PreparedStatement 编译次数减少,效率较高

在这里插入图片描述

使用 做参数的占位符,从而解决由于字符串拼接带来的SQL注入危险

在这里插入图片描述

六、JDBC API梳理

在这里插入图片描述
在这里插入图片描述

七、JDBC Utils工具类

在这里插入图片描述

七、JDBC 处理事务
JDBC 中的 Connecion对象默认是自动提交
使用的语句:
connection.setAutoCommit(false); //其实就相当于 开始一个事务
...
connection.commit();
....
//异常处理中
connection.rollback(); //这里如果不添加保存点就默认回滚到事务开始的地方
八、批处理 多条sql语句一起提交给数据库执行
1、方法在这里插入图片描述
2、 必须在url制定参数!!! 否则根本没效果

在这里插入图片描述

3、通常和PreparedStatement 一起使用效率更高
4、底层是ArrayList,初始为10个空间、后续按照1.5倍扩容,来存放sql语句

在这里插入图片描述
在这里插入图片描述

九、mysql数据库连接池
1、传统连接弊端不能控制连接数量从而引发一系列问题
  • 同时连接的数量太多会造成数据库崩溃,从而数据库未能关闭,就会造成数据库 内存泄漏
    在这里插入图片描述
  • 单独连接又关闭,惊醒很多次会非常耗时
    在这里插入图片描述
2、数据库连接池
1)基本介绍

在这里插入图片描述

2)示意图

在这里插入图片描述

3)数据库连接池使用==javax.sql.DataSource【连接池–数据源】==接口,其具体实现由不同的厂商实现,会提供jar包。
4)数据库连接池分类

在这里插入图片描述

3、C3P0 数据库连接池
  • 方式一:在程序中指定数据库连接的相关参数【从配置文件中】
  • 方式二:使用配置文件模板 C3P0.config.xml,添加到项目的src文件夹下
    应该按照实际进行修改
    在这里插入图片描述
4、Drid德鲁伊 数据库连接池 建议使用!!又快又稳定
  • 配置文件是druid.properies
    在这里插入图片描述
    在这里插入图片描述
做一个基于德鲁伊数据连接池的 数据库操作工具类:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、Apache-DBUtils
1、ResultSet存在的问题

2、解决办法
连接时:在这里插入图片描述
连接断开时

在这里插入图片描述

3、ApDBUtils
4、ApDBUtils 查询 select 细节:
查询结果的形式不同(多行、单行、单行单列…)使用不同的ResultSetHandler接口类:

这里留下了一个可以使用泛型进行改进的空间

  • 多行多列数据 --> 返回List集合在这里插入图片描述
  • 单行 多列数据 --> 返回某个JavaBean对象在这里插入图片描述
  • 单行单列数据 Scalar --> 返回Object对象
    在这里插入图片描述
5、ApDBUtils DML语句(增删改) 细节:
使用的都是queryRunner的update()方法,返回值均是整数表示受影响的行数

在这里插入图片描述

5、数据库的表和 JavaBean的类型映射关系

在这里插入图片描述

十一、将对一个表通用的增删改查封装为一个类——BasicDao
1、目前为止java开发中存在的问题

在这里插入图片描述

2、示意图:各司其职

在这里插入图片描述
在这里插入图片描述

3、简单设计

在这里插入图片描述

4、业务层完成多表操作

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值