您的位置:首页 > 其它

JDBC

2015-10-05 11:37 232 查看
本文是较早版本JDBC文章,最新版在JDBC

1、先来一个简单的例子Java连接数据库的简单例子

这个例子基本上包含了数据库操作需要的全部步骤,当然其中有很多缺点。

2、对这些缺点进行修改,主要就是建立一个工具类(这个工具类在之后还会有多次修改)

静态代码块的工具类 一般使用这个

单例模式建立工具类

3、建立连接后,就要进行数据库的增删改查操作了,在增删改查中,也就查(Query)比较复杂,也是最常用的,其他的都比较简单(增删改都是Updata)

4、前面查询用到的是
Statement
,它查询用到的sql语句只能通过拼接的方式产生,这样就会出现sql注入的问题。为此,可以使用
PreparedStatement
,它不仅解决了sql注入问题,速度也比
Statement
快。

5、
java.sql
中的Date类型和
java.util
中的日期类型不一样所以还必须注意两者之间的转换:jdbc中的日期类型问题

6、数据库中不仅可以存储
char
text
int
这样的基本数据类型,还可以存储长文本,和二进制文件(如图片)等:

数据库中使用Clob处理长文本

数据库中使用Blob处理二进制数据

这其中用到的数据库的内容并不复杂,主要就是涉及到输入输出流的问题。

7、前面用到的例子都是在控制台输出结果,这显然没有用,所以

我们根据三层架构重新建立代码:

Dao的实现与测试(比较好的代码)

这些代码是比较规范的,可以用在一般的小程序中了。

还有一种更好的使用工厂模式实现
UserDao
的方式Dao工厂模式(代码比较好)

8、事务:事务是为了保证数据库安全性而设计的,一般的jdbc都是将事务设置成自动提交的,可以手动设置称不自动提交:

事务1这个例子当发生回滚时,整个事务都取消,如果不想全部取消,可以设置保存点
savePoint
事务–保存点

9、有时候会需要获取刚刚插入的记录的主键:返回刚插入的数据的主键 其中使用的是
PrepareStatament
的重构,
PrepareStatament
有多种重构,各自有不同的作用。

10、当有1000条数据需要操作时,可以使用打包,批处理

11、结果集中的数据不仅可以向后滚动,还可以向前滚动,定位等等操作。可滚动的结果集,向前滚动,绝对定位、在一些不支持分页技术的数据库中,可以使用这个进行分页 。

12、元数据信息:

可以通过
DatabaseMetaData
获取数据库的元数据

ResultSetMetaData
结果集元数据的应用:利用结果集元数据将查询结果封装成Map

13、反射,反射使用起来很灵活,但是可读性太差

反射1:给定类,构造一个对象

反射2:获取类的属性,方法(通过方法名调用方法),声明

反射3:利用java反射技术将查询结果封装成对象

14、上面的例子利用反射将查询结果封装称一个User对象,本例也是利用反射,将查询结果封装成Object对象 将查询结果封装成Object对象,然后在转成想要的对象。

15、连接池:之前的例子中,每次程序结束都会关闭连接,这样太浪费资源,可以使用连接池的方式优化。

连接池1 这只是对连接池的简单演示,还可以对他进行一些优化,如连接池2:对数据源的简单优化。这些例子中要使用
free()
函数将连接放回到连接池中,如果不小心调用了
close()
方法,就会将连接关闭,为了避免这种事情发生可以进一步优化(代理模式),这个例子中实现了
Connection
接口,这样就要实现他的所有的方法,这样做显然太复杂,所以可以使用动态代理

16、前面提到了数据源,并且自己写了几个数据源例子,但是都没有实现·
DataSource
接口。

数据源有很多好处,但是实现起来太麻烦,好在现在有很多开源实现,比如一个现成的数据源:DBCP

17、对于前面第7条中DAO代码的优化

将代码中公共的部分提取到超类中,不同的部分有各个子类负责

18、JdbcTemplate

JdbcTemplate是由Spring框架提供的一个工具类,他对Jdbc API提供了很好的封装,可以用来完全替代JDBC API

使用
JdbcTemplate
查询


使用
JdbcTemplate
添加新记录


19、支持参数命名的JdbcTemplate

工具类1:从2开始使用

工具类2:用于15

工具类3:用于15

工具类4:用于16,17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: