「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
前言
在上一篇章中我们讲了Java的JDBC规范,在java中jdbc规范便是那一套jdbc api接口,每个数据库厂商去实现对应驱动与接口便可以使用java控制数据库。本章我们要讲的就是jdbc api的三大天王Connection、Statement、ResultSet再方式特性DatabaseMetaData
API
Connection数据库连接
Connection是抽象了数据库连接通过驱动与数据源建立连接,建立后通过Conneation对象来访问数据库,获取数据源有两种: 1、driverManager 2、Datasource 目前大部分厂商都采用实现DataSource的接口来实现获取数据源,按照书中所讲,选择Datasource是因为他的可移植性更高。其内部使用JNDI(java命名和目录访问接口)
drivermanager
drivermanager在jdbc4.0之前使用的特别多,他能提供数据源的链接。
Datasource
datasorce在mybatis中也有实现,具体实现类为UnpooledDataSource和PooledDataSource,前者没有实现连接池功能,而后者采用装饰器模式增强了连接池管理功能。
注意:connection对象使用完需要记得关闭连接对象,否则会一直占用数据库连接。
Statement处理Sql的组件之一
Statement接口有两个重要子接口一个是预编译版本的Statement也就是preparedStatement,一个是继承preparedStatement的callablestatement它是在前者的基础上增加了调用存储过程以及检索存储过程调用的方法。
preparedStatement 预编译Sql
早期使用Statement处理Sql时会出现sql注入的情况,写入类似 where 1=1 或 or xx 等来跳过sql的校验,直接对数据库操作在互联网开发中这是非常致命的,所以在后期开发中大家尽量使用预编译的Statement,传入的Sql关于擦参数部分使用?来代替避免了Sql注入的问题。
callableStatement 存储过程 add
改接口就是上一个接口的继承,他也有预编译的方法,比起前两者正如前面所说就是添加了两类方法。
注意:Statement对象使用完也需要关闭。
总结 & 遗漏
- 还有两个jdbc api 接口我们放在下一章来讲
- 为了避免Sql注入请使用preparedStatement来处理Sql
- jdbc规范中的close关闭方法也很有学问,挖坑