Advertisement

学习笔记 - JDBC知识点总结

阅读量:

文章目录

  • 第一章 JDBC概述
  • 第1节 基本概念
  • 掌握编写JDBC程序的基本步骤
  • 学习实现数据库连接操作的关键技术
  • 掌握编写能够实现数据库操作的应用程序所需的基本技能
  • 熟悉使用JDBC所需的各种Java标准库包及其功能特点
  • 理解并掌握关键API集合的设计与实现原理
  • 掌握数据库连接URL的标准格式表示方法以及相关注意事项
  • 学习驱动管理类(DriverManager)的具体应用方法与实践技巧

基于预编译元组集体存取操作实现增删改查功能

  • 三、Jdbc数据库事务操作

    • 3.1 使用到的API
    • 3.2 使用步骤
    • 3.3 回滚点
    • 3.4 自动提交的情况
  • 四章 DAO体系

  • 4.1 DAO的定义与作用解析

  • 4.2 基础Dao类的功能实现

  • 4.3 根据不同表定制的Dao与DaoImpl设计

  • 第五章 数据存储解决方案

    • 第五章小节 数据存储解决方案概述
      • 第五章小节中的常见问题分析
      • 第五章小节中的主流应用场景与解决方案
      • 第五章小节中的深入探讨不同的配置策略与优化方案
  • 六、采用Apache-Query进行增删改查操作流程

    • 6.1 Apache-Query概述
      • 6.2 使用Apache-Query进行增删改查操作实践
  • 七、批量处理机制和Mysql中的Blob字段

    • 7.1 数据类型转换表
    • 7.2 向Mysql中注入Blob字段
    • 7.3 批量插入数据机制

一、JDBC简介

1.1 定义

基于标准SQL语言设计的统一访问与操作公共接口(API),为应用程序提供了通过Java类库访问 databases的能力。JDBC是Java语言中实现 databases访问的标准规范。各 software developers根据各自支持的数据通信 format开发相应的 data connection drivers.这些 data connection drivers通常由 software developers提供.

在这里插入图片描述

1.2 编写JDBC程序的步骤

1 加载Java Classpath资源 2 基于JDBC-ODBC桥梁的全Java驱动方法 3 启动并注册数据库驱动 4 建立与数据库的连接 5 生成预设语义参数对象并执行SQL指令 6 释放相关资源

Note: 载荷JDBC驱动需要通过调用Class类的静态方法,并向该方法传递欲加载的JDBC驱动类名;Driver类内部包含一个静态代码块,在该块中完成对JDBC驱动进行注册的动作。
底层代码: java.sql.DriverManager.registerDriver(new Driver());

1.3 编写连接数据库的代码

外部配置文件properties(连接sqlserver数据库)

外部配置文件properties

外部配置文件properties(连接mysql8.0数据库)

在这里插入图片描述

连接代码

在这里插入图片描述

1.4 使用jdbc过程中会使用到的包

包名 作用
java.sql 所有与 JDBC 访问数据库相关的接口和类
javax.sql 数据库扩展包,提供数据库额外的功能。如:连接池
数据库驱动 由数据库厂商提供,是对 JDBC 接口实现的类

1.5 JDBC 的核心 API

接口或类 作用
DriverManager 管理和注册数据库驱动、得到数据库连接对象
Connection 连接对象, 可用于创建Statement和preparedStatement对象
Statement sql语句对象, 用于将sql语句发送给数据库服务器
PreparedStatement sql语句对象, 是Statement的子接口
ResultSet 结果集对象

1.6 连接数据库的url格式

复制代码
    连接数据库的 URL 地址格式:协议名:子协议://服务器名或 IP 地址:端口号/数据库名?参数=参数值

1.7 DriverManager类

方法名 描述
getConnection(url,user,password) 通过三个参数获取数据库连接对象conn
getConnection(url,info) 通过外部properties文件的key(user,password)的值和url来获取数据库连接对象conn

二、使用PreparedStatement实现增删改查操作

2.1 关于PreparedStatement

复制代码
     Statement的子接口, 用来预编译SQL语句, 效率高, 可以防止SQL注入问题

2.2 PreparedStatement和Statement的区别

  1. PreparedStatements运行得更快。DBServer会对预编 compilation statements提供性能上的优化。因为相同的PreparedStatements可能会被反复使用,在执行这些语句时DBServer会将它们缓存起来。从而避免了重复的编译过程。
  2. 每次Statement被使用的时候都会被重新解析一次。
  3. PreparedStatements能够有效防止SQL注入攻击。

2.3 SQL注入问题

复制代码
    是指某些系统没有对用户的输入充分检查, 用户输入部分SQL语句或命令时, 利用非法的SQL语句进行恶意操作的行为。

2.4 PreparedStatement的执行原理

在这里插入图片描述

2.5 使用PreparedStatement的步骤

  1. 建立数据库连接操作。

  2. 生成SQL语句代码。

  3. 调用prepareStatement方法并传递sql参数。

  4. 替换占位符内容。

  5. 执行生成的SQL语句操作。

  6. 进行数据库连接建立操作。

  7. 编制完整的SQL指令代码。

  8. 调用prepareStatement方法并传递所需sql参数。

  9. 替换所有的占位符内容。

  10. 执行生成的完整SQL指令操作。

PreparedStatement的方法

方法名 作用
excute 执行SQL语句
excuteQuery 返回ResultSet结果集对象
excuteUpdate 返回数据库中受影响的记录数

ResultSet的方法

方法名 作用
next 往下查询结果, 返回布尔值
getXXX(“id/value”) 获取结果集中指定值

三、Jdbc数据库事务操作

3.1 使用到的API

Connection接口中与事务有关的方法 说明
void setAutoCommit(boolean result) 设置是否自动提交
void commit() 提交事务
void rollback() 回滚事务

3.2 使用步骤

  • 建立数据库连接
    • 将事务自动提交功能禁用
    • 获取预设参数集句柄
    • 执行SQL语句操作
    • 在常规情况下提交当前事务
    • 遇到异常时回滚当前未提交的事务
    • 最后确保释放所有资源,并恢复自动提交设置

3.3 回滚点

conn.setSavepoint() 设置回滚点
conn.rollback(sp) 返回回滚点

3.4 自动提交的情况

什么时候自动提交?

  • 当创建连接对象时,默认情况下会自动生成提交请求(每当执行一次SQL语句且成功后都会触发此操作)。
  • 一旦关闭数据库连接,后续的数据操作将直接返回结果集。
  • 数据一旦被提交就无法回滚。

四、DAO

4.1 什么是DAO?作用是什么?

复制代码
     Dao: Date Access Object访问数据信息的类和接口, **包括了对数据的CURD(create,update,retrival,delete), 而不包含任何业务相关的信息**, 也称为: BaseDAO
     作用: 为了实现功能的模块化, 更有利于代码的维护和升级

4.2 BaseDao代码演示

获取BaseDao的子类继承的父类的泛型

在这里插入图片描述

通用的增删改

在这里插入图片描述

通用的单/多记录查询

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

查询特殊值

在这里插入图片描述

4.3 针对具体表的Dao和Daoimpl

对于具体的目标表的DAO用于定义该表的一些规范, 实现类则通过DAOImpl来实现CustomerDAO演示界面

在这里插入图片描述

CustomerDaoimpl演示

在这里插入图片描述

五、数据库连接池

5.1 数据库连接池介绍

复制代码
     传统jdbc连接数据库的弊端:
       1. 数据库的连接资源没有得到比较好的重复利用
       2. 对于每一次数据库连接, 使用完都要断开
       3. 不能控制被创建的连接对象数量
     数据库连接池的思想
       为数据库连接建立一个“缓冲池”, 预先在缓冲池中放入一定数量的连接, 当需要建立数据库连接时, 只要从池中取出, 使用完毕后再放回来。
       数据库连接池允许应用程序重复使用一个现有的数据库连接, 而不是重新建立一个。

5.2 常见的数据库连接池

复制代码
      c3p0、Druid、DBCP

5.3 几种数据库连接池的使用

C3p0数据库连接池

使用方式一

在这里插入图片描述

使用方式二: 使用xml配置文件

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

Druid数据库连接池
使用方式一

在这里插入图片描述

使用方式二: 使用配置文件

在这里插入图片描述

DBCP数据库连接池
使用方式一

在这里插入图片描述

使用方式二: 使用配置文件

在这里插入图片描述

六、使用Apache-Query进行增删改查操作

6.1 Apache-Query简介

复制代码
    commons-dbutils是Apache组织提供的一个开源的jdbc工具类类库, 是对jdbc的简单封装
    API介绍:
     commons.dbutils.QueryRunner
     commons.dbutils.ResultSetHandler
     commons.dbutils.Dbutils
    所需jar包: commons-dbutils

6.2 使用Apache-Query进行增删改查操作演示

增删改演示

在这里插入图片描述

查询演示

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

七、批量处理机制和Mysql中的Blob字段

7.1 数据类型转换表

SQL类型 jdbc对应方法 返回类型
bit(n) getBoolean() boolean
TINYINT getByte() byte
SMALLINT getShort() short
INT getInt() int
BIGINT getLong() long
CHAR VARCHAR getString() String
Text(Clob) Blob getBlob() / getClob() Clob Blob
DATE getDate() java.sql.Date
TIME getTime() java.sql.Time
TIMESTAMP getTimestamp() java.sql.Timestamp

7.2 往Mysql中插入Blob字段

*Mysql中,在MySQL数据库中,Blob是一种二进制大型对象,并且具备存储大量数据的能力。
在MySQL中插入 Blob 类型的数据必须使用预编译语句,并且此类数据无法通过字符串拼接操作进行处理。

  • Mysql中的四种blob类型
类型 大小
TinyBlob 最大255
Blob 最大65k
MediumBlob 最大16M
LongBlob 最大4G

往数据库中插入Blob字段示例

在这里插入图片描述

从数据库中读取Blob字段示例

在这里插入图片描述

7.3 批量插入数据机制

注意: MySQL服务器默认情况下会禁用批次处理功能。在遇到错误时,请在配置文件url后添加?rewriteBatchedStatements=true这一参数即可启用批次处理功能。

方法 作用
ps.addBatch 攒SQL语句,加入Batch
ps.excuteBatch 执行Batch
ps.clearBatch 清空Batch

示例: 事务和批处理演示

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

全部评论 (0)

还没有任何评论哟~