jdbc:
JavaDataBase Connectivity,java操作数据库.jdbc是oracle公司指定的一套规范(一套接口)
驱动:jdbc的实现类.由数据库厂商提供.
jdbc作用:
连接数据库
发送sql语句
处理结果
jdbc使用步骤:
1.导入jar包(驱动) mysql-connector-java-5.1.39
2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
3.获取连接
DriverManager.getConnection("jdbc:mysql://loacalhost:3306/xxx","root","xxx");
4.编写sql
5.创建语句执行者
PreparedStatementst=conn.prepareStatement(sql);
6.设置参数
st.setXxx(int第几个问号,Object 实参);
7.执行sql
ResultSetrs=st.executeQuery();返回值:结果集
inti=st.executeUpdate();返回值:影响的行数
8.处理结果:
if(rs.next()){
rs.getXxx(int|String)
}
9.释放资源
使用junit单元测试
1.方法是public void xxx(){}
2.在方法上添加 @Test
3.在@Test 按下 ctrl+1(快速锁定错误)
4.在方法上右键 run as -->junit 就可以执行方法了.
连接池
使用jdbc的时候, 通过连接池来优化curd操作. 就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可
所有的连接池必须实现一个接口 javax.sql.DataSource接口
获取连接:getConnnection();
归还连接:conn.close();
装饰者模式:
使用步骤:
1.装饰者和被装饰者实现同一个接口或者继承同一个类
2.装饰者中要有被装饰者的引用
3.对需要增强的方法进行加强
常用的连接池:
C3P0:
使用步骤:
1.导入jar包c3p0-0.9.1.2.jar
2.使用api
a.硬编码(不推荐)
b.配置文件
配置文件的名称:c3p0.properties 或者c3p0-config.xml
配置文件的路径:放到src下(跟目录)
编码只需要一句话
newComboPooledDataSource()//使用默认的配置
//ComboPooledDataSourceds = new ComboPooledDataSource();
ComboPooledDataSourceds =new ComboPooledDataSource("itcast12321");
//若查找不到命名的配置 使用默认的配置
Stringsql="insert into category values(?,?);";
PreparedStatementst=conn.prepareStatement(sql);
//设置参数
st.setString(1,"c124");
st.setString(2,"解药");
inti = st.executeUpdate();
System.out.println(i);
使用dbutils完成curd操作
dbutils:是apache组织的一个工具类,jdbc的框架,更方便我们使用
使用步骤:
1.导入jar包commons-dbutils-1.4.jar
2.创建一个queryrunner类
queryrunner作用:操作sql语句
构造方法:
newQueryRunner(Datasource ds);
3.编写sql
4.执行sql
query(..):执行r操作
update(...):执行cud操作
dbutils核心类或接口
QueryRunner:类操作sql语句(同上)
注意:底层帮我们创建连接,创建语句执行者 ,释放资源.
DbUtils:类释放资源,控制事务(有QueryRunner就不用这个了)
closeQuietly(conn):内部处理了异常
commitAndClose(Connectionconn):提交事务并释放连接
ResultSetHandler:接口封装结果集
(了解)ArrayHandler, 将查询结果的第一条记录封装成数组,返回
(了解)ArrayListHandler, 将查询结果的每一条记录封装成数组,将每一个数组放入list中返回
★★BeanHandler, 将查询结果的第一条记录封装成指定的bean对象,返回
★★BeanListHandler,将查询结果的每一条记录封装成指定的bean对象,放入list中 返回.
(了解)ColumnListHandler, 将查询结果的指定一列放入list中返回
(了解)MapHandler, 将查询结果的第一条记录封装成map,字段名作为key,值为value 返回
★MapListHandler,将查询结果的每一条记录封装map集合,将每一个map集合放入list中返回
★ScalarHandler,针对于聚合函数例如:count(*) 返回的是一个Long值