回顾
一、JDBC是什么?
Java DataBase Connectivity
JDBC和数据驱动的关系:规范和实现的关系。
二、JDBC的编码步骤
a、注册驱动
b、获取链接
c、得到SQL语句对象
d、执行语句
e、如果有结果集,遍历
f、释放资源
三、常用接口或类
DriverManager
Connection
Statement
ResultSet:java类型和数据库类型的对应关系。游标。
释放资源
四、抽取JDBC工具类
五、改写注册和登录案例
业务层和DAO层解耦
六、PreparedStatement接口
七、客户信息管理
今天的内容
一、继续完成客户信息的修改和删除
二、大结果集的分页编码(重点、难点)
1、数据的支持:MySQL
LIMIT M,N;
M:开始记录的索引。第一条记录的索引是0
N:每次查询出的记录条数
一次取10条:
第一页:SELECT * FROM customers LIMIT 0,10;
第二页:SELECT * FROM customers LIMIT 10,10;
第n页:SELECT * FROM customers LIMIT (n-1)*10,10;
总页数:
总页数=总记录条数%10==0?总记录条数/10:总记录条数/10+1;
2、具体的分页代码
2.1设计Page类,封装所有与分页有关的信息
2.2改造Service
参考实现:
2.3改造DAO
2.4Servlet和JSP
三、批处理(练一遍)
1、一次性向数据库发送多条SQL语句。降低了与数据库的交互次序,提升数据库层执行效率。
四、LOB(CLOB、BLOB)的存取(练一遍)
1、LOB:Large Object。
CLOB:character Large Object。大文本。
BLOB:Binary Large Object。图片、视频、声音等。
2、MySQL支持的LOB的类型。可变长度类型。
TINYBLOB, TINYTEXT 256B
BLOB, TEXT 64K
MEDIUMBLOB, MEDIUMTEXT 16M
LONGBLOB, LONGTEXT 4G
五、事务的入门(很重要、简单)
1、数据库的事务控制
start transaction: 开启事务
rollback: 回滚事务
commit: 提交事务
2、JDBC控制事务
六、事务的特性(很重要、简单)
1、事务的特性:经常作为面试
原子性:指处于同一个事务中的多条语句是不可分割的。
一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如,转账,转账前两个账户余额之和为2k,转账之后也应该是2K。
隔离性:指多线程环境下,一个线程中的事务不能被其他线程中的事务打扰
持久性:事务一旦提交,就应该被永久保存起来。
2、事务隔离性专题
如果不考虑事务的隔离性,会出现以下问题:
脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。
不可重复读:指一个线程中的事务读取到了另外一个线程中提交的update的数据。
虚读:指一个线程中的事务读取到了另外一个线程中提交的insert的数据。
隔离级别:
1:READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生。
2:READ COMMITTED:防止脏读的发生,不可重复读、虚读都有可能发生。
4:REPEATABLE READ:防止脏读、不可重复读的发生,虚读有可能发生。
8:SERIALIZABLE:防止脏读、不可重复读、虚读的发生。
级别越高,数据越安全,但性能越低。
MySQL:
查看当前事务的隔离级别:SELECT @@tx_isolation;
更改事务的隔离级别:(注意:一定要在开启事务之前设定)
SET transaction isolation level
四个级别之一(单词);
回去练习:
JDBC中如何控制事务的隔离级别:
前提:在开启事务之前设置隔离级别。
设置事务的隔离级别:
Connection void setTransactionIsolation(int level);
分页