JDBC深入学习笔记
Jdbc:Java Database Connectivity(使用java操作数据库的标准接口,任何的java框架最终底层都是使用jdbc来操作数据库的,只是框架对jdbc有所封装)
JDBC的核心接口和类:(深入研究源码有助于我们得心应手的使用)
核心类:DriverManager
核心接口:Connection、PreparedStatement、ResultSet、Statement(几乎被代替了)
PreparedStatement接口:预处理机制,可以填充占位符。(非常重要的一个接口)
ResultSet接口:结果集接口,把它理解成结果集容器吧,有点集合容器中迭代器的感觉。
备注:preparedStatement填充占位符时候使用的是别名机制
Jdbc连接操作数据库的步骤:
1.加载驱动 Class来加载
2.创建Connection对象 DriverManager来获得
3.获得预处理机制执行语句 connection获得预处理机制
4.获得结果集(可选) 预处理机制获得的
备注:由它们的步骤我们就可以看出,上一层都是依赖下一层的。
备注:数据的操作有两点要特别注意(事务、资源关闭)
举例:连接mysql的几个基本参数
DRIVER=”com.mysql.jdbc.Driver”
URL=”jdbc:mysql:///dbname”; 表示的是本机默认3306端口
USERNAME:admin
PASSWORD:admin
处理sql.Date和java.util.Date的转换
new Date(new Date().getTime());
第一个Date是java.sql里的Date
第二个Date是java.util里的Date
更标准的写法是:new java.sql.Date(new java.util.Date().getTime());
配置C3P0数据源
备注:http://www.mchange.com/projects/c3p0/#quickstart,有这个网址难道你还不会配置吗?好吧我来稍稍介绍一下
备注:其实它支持xml配置文件和java程序设置属性的方式(推荐使用xml配置文件,修改方便)
备注:在src下建立一个c3p0-config.xml配置文件,默认就是使用c3p0-config.xml名字,里面的name属性随便改,我们使用的就是根据name属性来找的。
<c3p0-config>
<named-config name="c3p0xml">
<!-- 指定连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password">admin</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
<!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
<!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
初始化获得数据源:
数据源只需要初始化一次就行了,所以将其初始化放入static代码块中
static{
dateSource=new CombopooledDataSource(“配置文件名字”);
}
备注:我们可以采用配置c3p0-config.xml配置文件来配置,数据源对象的setter方法来设置,当然数据源对象得是实现类的数据源对象(CombopooledDataSource的对象)。数据库连接池的Connection 对象的close()方法并不是真正的关闭资源,而是把数据库连接资源归还给数据库连接池。
DbUtils、BeanUtils小工具类
备注:深入它们的源码分析,对自己能力的提高非常有帮助
DbUtils:
1.QueryRunner类(最为核心的类,是一个线程安全的类,最常用的方法就是query)
2.BeanHandler、BeanListHandler、ScalarHandler(各种结果处理类)
这两个核心类一定要深入源码分析,其实看完源码之后就会发现,原来还是反射啊。
备注:当然是看api了或导入src源码分析
BeanUtils:
1.直接使用它静态方法,它的出现就是为了方便操作javabean.
备注:直接关注核心几个静态方法