隔离级别: 脏读, 不可重复读, 虚读, 幻读jdbc
一套接口 --->要求厂商自己实现操作各自数据库的驱动
步骤:
1. 注册驱动
2. 获取连接
3. 创建sql和执行sql的对象
4. 执行sql获取结果
5. 处理结果
6. 释放资源
1. ResultSet 的遍历
while(rs.next) {
rs.getObejct
}
2. sql注入
PrepareStatement 配合占位符 ?
pst.executeQuery() --> 没有参数
pst.executeUpdate() --> 没有参数
3.事务
conn.setAutoCommit(false);
conn.commit()
conn.rollback();
连接池
C3P0
连接步骤:
1.导jar
1.c3p0 2个
2.mysql驱动
2.导入配置文件(src目录下)
c3p0-config.xml
3.使用
DataSource dataSource = new ComboPooledDataSource();
Connection con = dataSource.getConnection();
DRUID(德鲁伊)
接入步骤
1.导jar
1.druid
2.mysql驱动
2.导入配置文件(src)
druid.properties
3.使用
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))
DataSource dataSource = DruidDataSourceFactory.createDataSoure(pro)
Connection con = dataSource.getConnection();
JdbcUtils实现思路
1.获取数据源(连接池) DataSource
2.获取连接对象 Connection
3.释放资源 重载
思路:
DataSource在类加载的时候就应该初始化,为了保证对象能够及时创建,在 static{} 静态代码块中创建的对象
Properties pro = new Properties(); pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))
dataSource = DruidDataSourceFactory.createDataSoure(pro)
提供返回数据源的方法 getDataSource() ---> return dataSource
提供返回连接 getConnection() ---> return dataSource.getConnection()
JdbcTemplate
SPRING (基于jdbc来简化数据库的操作)
DataSource dataSource = new ComboPooledDataSource();
JdbcTemplate template = new JdbcTemplate(dataSource);
增删改
template.update("sql",[具体参数]);
查询
单条结果
Map<String,Object> map = template.queryForMap("sql",[具体参数]);
Bean bean = template.queryForObject("sql",new
BeanPropertyRowMapper<Bean>(Bean.class),[具体参数]);
多条结果
List<Map<String,Object>> list = template.queryForList("sql",[具体参
数]);
List<Bean> list = template.query("sql",new
BeanPropertyRowMapper<Bean>(Bean.class),[具体参数]);