JDBC知识点
2021-04-17 09:50:18   0  举报             
     
         
 AI智能生成
  jdbc
    作者其他创作
 大纲/内容
  ①JDBC介绍    
     Java Data Base Connectivity  
     它是可以执行SQL语句的Java API  
     sun公司只是提供了JDBC API【接口】,数据库厂商负责实现  
     ④:PreparedStatment和Statement区别    
     1.Statement会频繁编译SQL。  
     1.PreparedStatement可对SQL进行预编译,提高效率,预编译的SQL存储在PreparedStatement对象中  
     2.Statement对象编译SQL语句时,如果SQL语句有变量,就需要使用分隔符来隔开,如果变量非常多,就会使SQL变得非常复杂。  
     2.PreparedStatement可以使用占位符,简化sql的编写  
     3. 正因为Statement对象需要拼接,那么可能会有SQL注入问题  
     3.PreparedStatement使用占位符,没有SQL注入问题  
     4.Statement批处理可以 可以向数据库发送不同的SQL语句  
     4.PreparedStatement批处理只能对同一种类型的SQL语句  
     ⑤API实战    
     获取自动增长主键列    
     设置了主键为自动增长的话,我们很多时候在业务上是需要得到主键去进行其他操作的(插入操作)。  
     通过getGeneratedKeys得到主键列  
     处理二进制和大文本数据    
     Oracle    
     Oracle使用的是BLOB这个字段来进行操作  
     获取到Oracle的BLOB对象,把二进制数据放到这个指针里面,指针指向BLOB字段  
     Mysql    
     使用setCharacterStream()处理大文本  
     使用setBinaryStream()处理二进制  
     调用数据库的存储过程    
     使用的是CallableStatement对象来进行调用  
     存储过程语法: {call [(,, ...)]}  
     函数的语法:{?= call [(,, ...)]}  
     元数据    
     元数据其实就是数据库,表,列的定义信息  
     利用元数据可以对我们的工具类再进行抽象和封装,形成更加好用的组件  
     ⑧数据库连接池    
     原生JDBC频繁地打开、关闭连接造成系统性能低下,因此需要数据库连接池  
     自己编写数据库连接池    
     连接使用List集合来进行装载,初始化多个Connection,需要连接时就把集合的元素返回出去  
     使用动态代理来实现把资源返回给List集合。  
     开源数据库连接池    
     C3P0  
     DBCP  
     C3P0  
     DBCP  
     ②JDBC编码步骤    
     导入MySQL或者Oracle驱动包  
     装载数据库驱动程序(Driver)  
     获取到与数据库连接(Connection)  
     获取可以执行SQL语句的对象(Statement)  
     执行SQL语句(增删改查)  
     得到执行SQL返回的结果(ResultSet)  
     关闭连接(close资源)  
     ③写一个简单工具类    
     由于每次使用JDBC都会有相同的代码:获取Connection、close资源  
     因此,我们写一个简单的工具类来获取Connecion和close资源。减少重复的代码  
     driver、url、username、password是经常会变的,写在配置文件上是一种不错的选择  
     ⑥事务    
     一个SESSION所进行的所有更新操作要么一起成功,要么一起失败  
     Serializable【可避免脏读,不可重复读,虚读】Repeatable read【可避免脏读,不可重复读】Read committed【可避免脏读】Read uncommitted【级别最低,什么都避免不了】  
     ⑦工具类升级版    
     有了元数据API基础,我们可以使用策略模式来实现封装  
     结果集的操作交由调用者来进行实现,而我仅仅定义接口的行为  
     ⑨使用dbutils框架    
     dbutils框架其实就是类似我上面升级版的工具类,它是官方的组件  
     该类简化了SQL查询,配合ResultSetHandler使用,可以完成大部分的数据库操作,大大减少了代码量  
     ⑩实现分页    
     mysql    
      Mysql分页语法:      @start---偏移量,不设置就是从0开始【也就是(currentPage-1)*lineSize】      @length---长度,取多少行数据  
     oracle    
     Oracle分页:        Oracle的分页依赖于ROWNUM这个伪列,ROWNUM主要作用就是产生行号。      分页原理:        1:子查询查出前n行数据,ROWNUM产生前N行的行号        2:使用子查询产生ROWNUM的行号,通过外部的筛选出想要的数据  
    
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 