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();

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

  1. JDBC基础知识复习

    JDBC基础知识复习 1.JDBC连接数据库 1.1.导入JDBC驱动 1.2.注册JDBC驱动程序 1.3.创建连接对象 1.4.关闭JDBC连接 1.5.每种数据库对应的驱动名和URL 2.JDB ...

  2. 无线网络基础知识要点概括

    无线网络基础知识要点概括 本文为大家详细总结了12个无线网络基础知识要点.通过这些介绍,相信大家对无线网络这块就会有一个比较全面的认识了.详细内容见下文. 无线网络大家都很清楚,从移动通信,无线上网, ...

  3. 项目管理9大知识体系与5个具体阶段(zz)

    驱动 21 世纪新型商务企业发展的原动力是什么?有人答曰:项目管理.的确,项目管理作为一门新兴的学科,发展之快已超过了我们的想象.美国 Fortune 杂志甚至预言,项目经理将是 21 世纪的首选职业 ...

  4. NPDP产品经理小知识-团队发展的五个阶段(塔克曼模型)

    NPDP产品经理小知识-团队发展的五个阶段(塔克曼模型) 心理学教授布鲁斯·塔克曼(Bruce W.Tuckman)在 1965年提出了团队发展阶段模型:组建期(Forming).激荡期(Stormi ...

  5. JDBC 基础知识总结

    1.  何谓JDBC  --- Java Database Connectivity. 由Sun 公司提供的访问数据库的一组java类和接口,用来对数据库进行链接.发送SQL语句.处理返回结果,为开发 ...

  6. JDBC——入门知识【转】

      1. 什么是JDBC:Java数据库连接性(Java Database Connectivity) API,允许用户从Java应用程序中访问任何表格化数据源. 2. JDBC除了提供到更宽范围的S ...

  7. java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  8. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  9. 数字图像处理-知识体系概括

    转载自:http://blog.csdn.net/hitwengqi/article/details/8292675 目录 一.数字图像基础... 3 二.数字图像存储与显示... 3 三.图像变换. ...

最新文章

  1. Nature:“巨型原子”使芯片同时处理和收发量子信息成为可能
  2. C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)
  3. 在vue项目中对axios进行封装
  4. vysor原理以及Android同屏方案
  5. 【在线报表设计】提升报表外观的15个技巧
  6. chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...
  7. java 分批同时处理_java中List集合分批处理
  8. 收藏 | 各种Optimizer梯度下降优化算法回顾和总结
  9. 通用mapper版+SpringBoot+MyBatis框架+mysql数据库的整合
  10. python冒泡排序算法详解_Python 3.0冒泡排序算法示例源码
  11. 安装dhcp服务方法(系统为linux 7.0)
  12. java反编译工具Java Decompiler
  13. Go基础编程:Socket编程
  14. 激活golang编辑器
  15. 大学excel题库含答案_大学excel操作测试题「附答案」
  16. Foobar2000是一款完全可定制的音乐播放器
  17. php调用声卡,声卡转换器的作用是什么
  18. 局域网SDN技术硬核内幕 三 从物到人——SDN走进园区网络
  19. linux串口结构termios,linux串口termios.doc
  20. 【设计模式】简单工厂模式(C#)

热门文章

  1. iOS 日志管理异常捕获组件LFLogManager
  2. canal client leader
  3. SQL - server 数据库基础知识
  4. VS2010/MFC编程入门之四十四:定时器Timer
  5. Linux minilogd占用内存过高及开机启动项修改
  6. 像git一样管理数据,高效的数据管理平台TensorBay来了!
  7. 刚刚,SeetaFace版本升级!新增活体检测等功能
  8. 中断函数 printf_嵌入式中断服务函数的一些特点
  9. pytorch错误解决 | 错误‘Widget Javascript not detected. It may not be installed or enabled properly.‘
  10. C++ 20发布后,这个老牌编程语言又“真香”了