JDBC基本知识总结概括及8个阶段优化过程:

1.JDBC

1.JDBC的理解:

​ 一组API(接口规范),用于连接数据库通用的SQL语句,对数据存取

2.JDBC的好处:

​ 1.提供了访问数据库的统一路径,为开发者屏蔽一些细节问题
​ 2.开发者只需要面向这一组API接口开发即可
​ 3.不同的数据库针对这一组API提供不同驱动
​ 4.大大提高了开发效率,降低开发成本

3.核心:一个类,三个接口

​ 1.DriverManager:驱动管理类(针对不同的数据库加载不同的类)
​ 2.Connection连接接口 :java与mysql建立连接的
​ 3.Statement命令接口:操作sql语句的
​ 4.ResultSet结果集:查询返回的结果

4.使用:

1.下载 导入驱动包
2.新建java应用
3.连接步骤:

			1.注册驱动:
				DriverManager.registerDriver(new com.mysql.jdbc.Driver);
			2.获取连接对象:
				Connection conn = DriverManager.getConnection(url,user,password);
			3.编写sql命令:
				String sql  = "sql语句";
			4.创建命令对象:
				Statement statement = conn.createStatement();
			5.执行命令 返回结果:
				int update = statement.executeUpdate(sql);
			6.处理结果(场景)
			7.释放资源(关闭)原则先开后关

5.JDBC具体步骤实现:

1.加载驱动:
​ Class.forName(“com.mysql.jdbc.Driver”);
2.获取连接对象
​ Connection conn = DriverManager.getConnection(url,user,password);
3.编写sql命令
​ String sql = “”;
4.创建命令对象
​ Statement s = conn.createStatement();
5.执行sql语句
​ 执行增删改:
​ int update = s.executeUpdate(sql);
​ 执行查询:
​ ResultSet rs = s.executeQuery(sql);
6.处理结果
7.释放资源
​ 1.rs.close();
​ 2.s.close();
​ 3.conn.close();

2.JDBC步骤的优化:

优化1:
​ 驱动使用反射,加载驱动
优化2:优化连接对象
​ 0.问题:如果连接对象太多mysql服务器承受不起
​ 1.解决:引入连接池,重复使用连接对象
​ 2.常见的连接池:
​ 1.DBCP
​ 2.C3P0(效率高)
​ 1.使用default-config创建连接池对象无参的 自动读取c3p0-config.xml文件的default-config标签
​ 2.使用named-config 创建连接池对象有参的 自动读取named-config 根据name的属性值
​ 3.Druid(阿里封装的)易于监控
​ 通过druid.properties配置文件配置
优化3:
​ 优化连接池,将连接池的信息引入配置文件
优化4:封装JDBCUtils工具类
​ 1.静态代码块:实例化连接池对象
​ 2.静态方法:从池子中获取连接对象
​ 注意:使用连接池工具类,如果连接对象空指针了,检查配置文件
优化5:线程安全问题:使用ThreadLocal解决线程安全问题
​ TheadLocal原理:
​ 1.通过为每一个县城提供独立的变量副本解决变量并发访问的冲突问题
​ 2.每一个线程使用自己的变量副本
​ 解决线程安全问题:
​ 方案1:锁机制 原理:通过线程等待,牺牲时间解决冲突问题
​ 方案2:ThreadLocal 原理:通过每个线程维护一个本地变量副本,只能在当前线程内使线程以外的其他线程获取不到,牺牲空间解决冲突问题
优化6:命令对象的使用
​ 使用预编译命令对象PreparedStatement解决sql注入问题
优化7:引入dbutils工具类优化命令
​ 使用:
​ 1.下载 导包 commons-dbutils-1.7.jar
​ 2.使用 实现数据库表的增删改查
​ 1.创建核心类:
​ QueryRunner qr = new QueryRunner();
​ 2.编写sql命令
​ String sql = “”;
​ 3.执行命令:
​ 1.执行增删改
​ int update = qr.update(连接对象,sql语句,可变参数);
​ 2.执行查询
​ qr.query(连接对象,SQL语句,结果集映射对象,可变参数);
​ 4.释放资源:
优化8:基于三层架构 优化dao层
​ 1.基于实际开发项目的目录结构的三层架构,封装一个通用的dao
​ web层:接收用户请求信息和响应用户信息
​ service层:业务层处理一些业务逻辑
​ dao层:数据库访问层,操作数据库,一个数据库表对饮一个dao类和一个实体类
​ 通用的dao的作用:
​ 1.一个数据库表对应一个dao类和一个实体类,每一个dao中都是增删改查 为了使每一个dao类更加的简单
​ 2.是每一个dao继承BasicDao
​ 3.在BasicDao中封装,增删改查的方法
​ 4.使用dao时只需要传递参数即可
补充1:使用事务
​ 1.关闭自动提交 开启事务
​ connection.setAutoCommit(false);
​ 2.提交事务
​ connection.commit();
​ 3.回滚事务
​ connection.rollback();
补充2:批处理
​ 1.保存命令不执行:
​ pStatement.addBatch();
​ 2.执行命令:
​ pStatement.executeBatch();
​ 3.清空批处理:
​ pStatement.clearBatch();

发布了29 篇原创文章 · 获赞 9 · 访问量 800

猜你喜欢

转载自blog.csdn.net/qq_41488299/article/details/105668907