一、JDBC
概念
概念:Java DataBase Connectivity。Java语言操作数据库。
本质就是官方定义的一套操作所有关系型数据库的规则(接口)。各个数据库厂商去实现这套接口,提供数据库驱动jar包。就可以使用这套接口进行编码。即不需要修改代码,只需要修改jar包,来实现更换数据库的功能。
步骤
- 导入驱动jar包
- 注册驱动
- 获取数据库连接对象 Connection
- 定义sql
- 获取执行sql语句对象 Statement
- 执行sql,接受返回结果
- 处理结果
- 释放资源
步骤分解
DriverManager:驱动管理对象
- 功能
- 注册驱动:告诉程序该使用哪一个数据库驱动jar包
* static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager * 写代码用:Class.forName("com.mysql.jdbc.Driver"); * 在com.mysql.jdbc.Driver中通过静态代码块中调用注册功能 * mysql5之后的驱动jar包可以省略注册驱动的步骤
- 获取数据库连接
- static Connection getConnection(String url, String user, String password);
- 参数:
- url:jdbc:mysql://IP地址(域名):端口号/数据库名称
- user:用户名
- password:密码
- 注册驱动:告诉程序该使用哪一个数据库驱动jar包
Connection:数据库连接对象
- 功能
- 获取执行sql的对象
- Statement createStatement()
- PreparedStatement prepareStatement(String sql)
- 管理事务
- 开启事务
- setAotuCommit(boolean autoCommit) false时即开启事务
- 提交事务
- commit()
- 回滚事务
- rollback()
- 开启事务
- 获取执行sql的对象
Statement:执行sql的对象
- 功能
- 用于执行静态sql语句并返回生成的结果的对象
- boolean execute(String sql):执行任何sql
- int executeUpdate(String sql):执行DML语句、DDL语句,返回值为影响的行数
- ResultSet executeQuery(String sql):执行DQL语句
ResultSet:结果集对象
- 功能 封装查询对象
- boolean next():游标向下移动一行,如果返回false表示没有数据列,true则还有数据
- getXxx(参数):获取数据,Xxx为数据类型,参数为Int表示列的编号(从1开始),参数为String为列的名称
PreparedStatement:执行sql的对象(更强)
- sql注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,造成安全问题。
- 因此使用PreparedStatement来解决
- 预编译的SQL:参数使用?来作为占位符
- 步骤
- 导入驱动jar包
- 注册驱动
- 获取数据库连接对象 Connection
- 定义sql
- 注意参数的使用,使用?作为占位符select * from user where username=? and password=?;
- 获取执行sql语句对象 PreparedStatement:Connection.prepareStatement(String sql)
- 赋值
- 方法:setXxx(参数1, 参数2)参数1为?的位置,2的?值
- 执行,接受返回结果
- 处理结果
- 释放资源
二、连接池
数据库连接池
概念
其实是一个容器(集合),存放数据库连接的容器。当系统初始化后,容器就被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完后,会将连接对象归还给容器。
实现
- 1.标准接口:DataSourcew javax.sql包下
- 获取连接:getConnection()
- 归还连接:Connection.close()方法不会关闭连接而是归还连接
- 2.真实使用
- 1.C3P0:数据库连接池技术
- 2.Druid:数据库连接池技术,由阿里巴巴提供的
C3P0
- 步骤
- 1.导入包
- 2.定义配置文件
- 名称:c3p0.properties或者c3p0-config.xml
- 路径:直接将文件放在src路径
- 创建核心对象 数据库连接池对象 ComboPooledDataSource
- 获取连接:getConnection
Druid
- 步骤
- 1.导入包
- 2.定义配置文件
- 名称:druid.properties
- 路径:直接将文件放在src路径
- 加载配置信息
- 创建核心对象 通过工厂类来获取 DruidDataSourceFactory
- 获取连接:getConnection
spring JDBC
由spring框架提供的JDBC的简单封装
步骤
- 1.导入jar
- 2.创建对象 JDBCTemplate对象。依赖DataSource
- JDBCTemplate j = new JDBCTemplate(dataSource)
- 通过JDBCTemplate完成crud操作
- update():DML语句
- quertForMap():将结果封装到map
- quertForList():将结果封装到List
- quert():将结果封装到JavaBean对象
- quertForObject():查询结果,将结果封装为对象