什么是JDBC
JDBC:就是java语言连接数据库
JDBC的本质:就是提供了sun公司接口的实现类
JDBC基本使用:
1.导入jar包---放在java工厂下创建lib,目录--将所有第三方的jar包放入进来
2.注册驱动
Class.forName("com.mysql.jdbc.Driver");com.mysql.jdbc.Driver
3.获取数据库连接
DriverManager:驱动管理类(就是JDBC驱动服务)
DriverManager.getConnection(url,user,password);
4.准备sql语句
5.通过数据库连接对象获取执行对象Statement:执行静态sql语句
6.执行sql语句,向数据库服务器发送指令
Statement方法:int executeUpdate(String url);
7.返回结果
8.释放资源
JDBC中涉及相关的核心类以及核心接口的API
Connectuion---java.sql.Connection
成员方法:
有关事务管理相关的方法
与数据库执行对象的相关方法
Statement----java.sql.Statement
执行对象:执行静态sql语句
静态sql语句
insert into 表名 values
delete from 表名
PereparedStatement---java.sql.PereparedStatement:预编译对象
int executeUpdate(String sql):对预编译对象中sql语句直接操作
ResultSet -----java.sql.ResultSet:表示数据库结果集的数据库
成员方法:
boolean next():判断下一行是否存在有效数据
getXXX(int columnIndex):根据列的索引值获取表中结果数据
XXX getXXX(String columnIndex):
JDBC操作查询语句
ResultSet-------java.sql.ResultSet:查询数据表中的结果集
select * from...
封装工具类:DButils
将重复性的代码抽取出来
---将url,user,password,驱动核心类com.mysql.driver--封装到jdbc.properites文件中
使用工具类,完成insert into ... update...delete...
Statement/PreparedStatement
Statement---会产生sql注入
PreparedStatement:(安全)--有效防止sql注入
String sql="select * from where username=? and password=?";
获取预编译对象
stmt= conn.PreparedStatement(sql);
给占位符号赋值
void setxxx(int parameterIndex,实际参数)
参数1:?是第几个占位符
参数2:实际参数
执行查询
rs=stmt.executeQuery();
Statement和PreparedStatement的区别
执行对象
Statement操作的是静态sql语句
DDL/DML语句
DQL语句
Statement发送sql到数据库中,操作sql语句效率低,存在字符串拼接,造成sql注入
PreparedStatement:预编译对象
通过连接对象获取预编译对象的同时将参数化的sql法功数据库进行预编译
执行效率高.能够有效防止sql注入
Statement:
操作静态的sql语句,存在字符串拼接,造成sql注入,执行语句效率低
PrepredStatement:
预编译对象,通过连接对象获取预编译对象的同时
将参数化的sql语句发送数据库进行预编译,执行效率高,可以有效地防止sql注入
JDBC方式处理事务
Connection对象:
void setAutoCommit(boolean autocommit):是否启用自动提交
void rollback():事务回滚
void commit():提交任务之后,持久更改
连接池技术
dbcp,c3p0,druid,jdbcTemplate.....连接池技术
dbcp,c3p0:技术老
druid:使用居多-----------阿里巴巴开源项目 "德鲁伊"
连接池:频繁的操作DML/DQL
获取连接Connection对象--->使用完毕---->释放资源 (资源消耗大)
提供一些蚕食
最大连接数量 10
等待时间 3000
最小连接数量
激活数量
将连接池对象创建之后.可以重复利用,他关闭释放资源对象连接对象归还到连接池中...
druid连接池
阿里巴巴的开源项目
---通过githup上下载druid的项目
druid:使用居多----可以和springboot整合(druid-spring-boot-start:启动器)
连接速度很快---可以更有效的监控sql语句 查询语句的耗时以及并发时间
1.导入核心jar包
druid-1.0.9.jar
2.在src目录执行核心配置文件
jdbc.properties
有一些基本参数信息
连接池信息
druid里面内置信息
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb_02
username=root
password=root
initialSize=5 初始化连接数量5
maxActive=10 最大激活数量10
maxWait=3000 最大等待时间
3.获取连接对象
使用DruidDataSourceFactory:德鲁伊的物理数据源的工厂类
静态方法
public static DataSource cresateDateSource(Properties properties);
通用工具类:Dbutils的使用
QueryRunner(DataSource ds)
String sql="";
QueryRunner
update(String sql,Object...parameters)
query(String sql,ResultSetHandler<?>rs,Object..parameters)
ResultSetHandler 接口
new BeanHandler<?>(Class<?>clazz):将查询的某一条记录封装到某个对象中
new BeanListHandler<?>(Class<?> clazz);将查询的多条记录封装到List<?>集合中
new SclarHandler<>()---->查询单行单列的-->返回值是一个long类型的
举例:查询当前数据的总记录数
select count(id) from 表名
测试
黑盒测试和白盒测试
黑盒测试
不考虑里面内部结构以及逻辑结构---->功能性测试
白盒测试
知道当前逻辑结构以及内部结构