JDBC
1,基本概念 Java DataBase Connectivity数据库连接 java语言操作数据库
JDBC本质:定义了操作所有关系型数据库的规则(接口)。各个数据库厂去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口编程。
2,快速入门
导入驱动jar包
注册驱动
Class.forName(“com.mysql.cj.jdbc.Driver”);(mysql6.0及以后版本)
获取数据库连接对象connection
Connection conn=DriverManager.getConnection(url,user,password);
定义sql
String sql=“update account set balance=500 where id=1”;
获取执行sql语句的对象statement
Statement stmt=conn.createStatement();
执行sql,接收2返回结果
int count=conn.excuteUpdate(sql);
处理结果
System.out.println(count);
释放资源
stmt.close();
conn.close();
详解各个对象:
DriverManager:驱动管理器对象
注册驱动:告诉程序使用哪一个数据库驱动
static void registerDriver(Driver driver)
获取数据库连接对象
Connection:数据库连接对象
获取执行sql对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
管理事务
开启事务void setAutoCommit(boolean autoCommit)
提交事务commit();
回滚事务rollback();
Statement:执行sql对象
执行sql
boolean excute(String sql)
int executeUpdate(String sql):执行DML(insert,update,delete)语句,DDL语句,返回值为影响的行数
ResultSet excuteQuery(String sql):执行DQL(select)语句
ResultSet:结果集对象,封装查询结果
bolean next():游标向下移动一行
getXxx(参数):获取数据,代表数据类型,如getInt(),getString()
参数:int:代表列的编号,从1开始
String:代表列名称
使用步骤:游标向下移动一行
判断是否有数据
获取数据
PrepareStatement:执行sql对象
1,sql注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,会造成安全性问题
解决sql注入问题,使用PrepareStatement对象来解决
参数使用?作为占位符
获取执行sql语句的对象PreparedStatement Connection.preparedStatement();
给?赋值setXxx();
抽取JDBC工具类
目的:简化书写
注册驱动抽取
抽取一个方法获取连接对象
需求:不想传递参数,还得保证工具类的通用性
解决:配置文件
JDBC控制事务
使用Connection管理事务
在执行sql之前开启事务
在执行完所有sql后提交事务
在catch中回滚事务
数据库连接池
概念:其实就是一个容器(集合),存放数据库连接的容器
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
优点:节约资源,用户访问高效
实现:标准接口:DataSource java.sql包下的
方法:
获取连接:getConnection()
归还连接:如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接,而是归还连接。
C3P0:数据库连接池实现技术
1,导入jar包c3p0-0.9.5.2.jar和mchange-commons-java-0.2.12.jar
2,定义配置文件c3p0.properties或c3p0-config.xml
路径直接将文件放在src目录下即可
3,创建核心对象,数据库连接池对象ComboPooledDataSource
4,获取连接:getConnection();
Druid:数据库连接池实现技术,由阿里巴巴实现
步骤: 1,导入jar包druid-1.0.9.jar
2,定义配置文件
是properties形式的
可以叫任意名称,可以放在任意目录下
3,加载配置文件
4,获取数据库连接池对象:通过工厂类来获取DruidDataSourceFactory
5,获取连接
定义工具类
定义一个类 JDBC_druidHelper
提供方法:
1,获取连接方法:通过数据库连接池获取连接
2,释放资源
3,获取连接池的方法
Spring JDBC:JdbcTemplate
Spring框架对JDBC的简单封装。提供了JdbcTemplate来简化JDBC的开发。
步骤:
1,导入jar包
2,创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate templete=new JdbcTemplate(ds);
3,调用JdbcTemplate的方法完成CRUD操作
update():执行DML语句:增删改
queryForMap():查询结果将结果集封装为map集合,这个方法的结果集长度只能是 1,
queryForList():查询结果将结果集封装为list集合,
query():查询结果,将结果封装为javaBean对象
query的参数:RowMapper
一般我们使用BeanPropertyRowMapper实现类可以完成数据到JavaBean的自动封装
queryForObject():查询结果,将结果封装为对象
一般用于聚合函数的查询
练习:
需求:修改,添加,删除
查询多条记录:使用queryForList()代替queryForMap()注意:将每一条记录封装为一个Map集合,再将Map集合装载到集合中
/**
* 查询所有记录,将其封装为Emp对象的List集合
*
*/
@Test
public void test6() {
String sql=“select * from employee”;
List list=template.query(sql,new BeanPropertyRowMapper(Emp.class));
for(Emp emp:list) {
System.out.println(emp);
}
}