概念:将接口给各个厂家,对其进行实现。只需下载对应驱动jar,接口相同。
讲解各个对象作用
com.mysql 5后的驱动jar可以省略注册驱动
com.mysql.jdbc.Driver中存在:静态块注册驱动(实际上是对DriverManager注册功能) 告诉程序应该那种数据库接口包
1.DriverManager:
作用:
1.驱动管理对象
2.获取数据库连接 .getConnection(url ,user, pwd); url=jdbc:///数据库名,默认localhost:3306
2.Connection 数据库连接对象
1.获取执行sql的对象
Statement createStatement(sql)
PreparedStatement PreparedStatement (sql)
2.管理事务
开启事务: void setAutoCommmit(boolean)
回滚事务:rollback
提交事务:commit()
3.Statement
执行静态sql
boolean execute(sql)
int executeUpdata(sql)DML,DDL操作(int 表示影响的行数大于0执行成功)
ResultSet executeQuery(sql) 执行DQL
4.ResultSet
获取结果集
booleannext();向下移动一行 返回是否还有下一行
getxxx(参数 int或者string 编号或者名称);获取数据类型
Classloader.getResource 获取src路径 URL
5.preparStaement
解决sql注入
预编译sql:参数使用占位符? 注意在定义sql时使用?占位符取代参数
获取对象是要传入sql
给占位符赋值 用setxxx(index 编号位置,value 编号的值);
执行sql
boolean execute()
int executeUpdata()DML,DDL操作(int 表示影响的行数大于0执行成
JDBC控制事务
概念:事务要么同时成功要么同时失败。
使用Connection控制事务
开启事务connection.setAutoCommit(false);
提交事务connection.commit();
回滚事务connection.rollback();放在异常中
数据库连接池
数据库连接池:就是一个容器集合,当数据初始化,连接被创建,用来访问数据库,使用完连接对象会把链接对象使用到容器中。
实现:
DataSource javax.sql包下
获取连接 :getConnection()有驱动数据库厂商实现它
归还连接: connection.close()实现归还connection必须是连接池中拿出的
数据库连接池有两种
1.C3PO:
2.Druid:有阿里爸爸实现
使用C3P0
1.导入c3p0jar包 和驱动jar
2.C3PO的配置名称c3po.properties或者c3po-config.xml自己搜索
3.创建数据库连接池对象comboPoolDataSource对象
4.获取连接对象getConnection()
后面和JDBC没什么区别
使用Druid
1.导入c3p0jar包 和驱动jar
2.配置文件
propeerties 形式的自己获取
3.创建数据库连接池对象DruidDataSourceFactory.createDataSource(加载配置路径)对象
4.获取连接对象getConnection()
后面和JDBC没什么区别
定义一个工具类
1.定义一个类
2.提供静态代码块加载文件
3.获取方法
1.获取连接方法:通过数据库连接池获取
2.释放资源
3.获取连接池方法4
Spring JDBC
spring框架对JDBC的简单封装。提供了一个JDBCTemple简化JDBC的开发。
1.导入jar
2.创建JDBC对象,需要依赖于DataSource
JDBCTemple temple = new JDBCTemple (DataSource);
3.调用JDBCTemple 方法
updata(sql,...indexvalue)方法 DML
queryForMay(sql, ...indexvalue) 查询结果将结果封装到集合中
缺陷:查询的结果集只能是一条,将列名为key,值为value
List<Map<String,Object>>queryForList(sql, ...indexvalue) 查询结果将结果封装到集合中
将每一条集合封装到Map装到list
List<javabean名字> query(sql,new RowMapper<javabean名字>)查询结果将结果封装到javabean中需要实现方法
或者List<javabean名字> query(sql,new BeanPropertyRowMapper<javabean名字>(javabean名字.class))
一般用于执行聚合函数的
返回的class queryForObject(sql,返回的class的Class)查询结果将结果封装到对象中
网友评论