zoukankan      html  css  js  c++  java
  • 【Mybatis3源码学习之二】JDBC

    版本
      jdk1.8.0_171
      Mybatis-3.5.4
      IDE:Eclipse

    Mybatis能够流行的原因:
      (1)消除了大量的JDBC冗余代码,包括参数设置,结果集封装等;
      (2)SQL语句可控制,方便查询优化,使用更加灵活;
      (3)学习成本低比较低,对于新用户能够快速学习使用;
      (4)提供了与主流IOC框架Spring的集成支持;
      (5)引入缓存机制,提供了与第三方缓存类库的集成支持;

    JDBC(Java Database Connectivity)是Java语言中提供的访问关系型数据的接口,而Mybatis框架是对JDBC做了轻量级的封装,学习Mybatis源码前要对JDBC做一个了解。

    JDBC有一个规范JSR-000221,官方JSR规范下载地址:https://jcp.org/aboutJava/communityprocess/mrel/jsr221/index3.html,JDK中有两个关于JDBC的包:java.sql包和javax.sql包。

    一、java.sql包

    #数据类型
    java.sql.Array
    java.sql.Blob
    java.sql.Clob
    java.sql.Date
    java.sql.NClob
    java.sql.Struct
    java.sql.Time
    java.sql.Timestamp
    java.sql.SQLXML
    java.sql.Ref
    java.sql.RowId
    java.sql.SQLInput
    java.sql.SQLOutput
    java.sql.SQLData

    java类型和JDBC类型的对应关系:

    #枚举
    java.sql.Types
    java.sql.SQLType
    java.sql.JDBCType
    java.sql.RowIdLifetime
    java.sql.PseudoColumnUsage
    java.sql.ClientInfoStatus
    
    #API相关
    java.sql.Wrapper  //为应用程序访问原始数据类型的功能,从而使用JDBC中的一些非标准特性
    java.sql.Connection //数据库连接
    java.sql.Statement  //定义执行SQL语句的方法
    java.sql.CallableStatement //用于执行存储过程
    java.sql.PreparedStatement //可以设置SQL参数
    java.sql.DatabaseMetaData //获取数据源信息;确定数据源是否支持某一特性;获取数据源限制;确定数据源包含哪些SQL对象以及这些对象的属性;获取数据源对事务的支持;
    java.sql.ParameterMetaData //参数元数据信息
    java.sql.ResultSet        //提供检索和操作SQL执行结果相关的方法:3种类型、2种并行性、2种可保持性
    java.sql.ResultSetMetaData  //结果集元数据
    
    #驱动相关
    java.sql.Driver
    java.sql.DriverAction
    java.sql.DriverManager
    java.sql.DriverPropertyInfo
    java.sql.SQLPermission
    java.sql.Savepoint
    
    #异常
    java.sql.BatchUpdateException
    java.sql.DataTruncation  //Data Truncat异常
    java.sql.SQLClientInfoException
    java.sql.SQLDataException
    java.sql.SQLException
    java.sql.SQLFeatureNotSupportedException
    java.sql.SQLIntegrityConstraintViolationException
    java.sql.SQLInvalidAuthorizationSpecException
    java.sql.SQLNonTransientConnectionException
    java.sql.SQLNonTransientException
    java.sql.SQLRecoverableException
    java.sql.SQLSyntaxErrorException
    java.sql.SQLTimeoutException
    java.sql.SQLTransactionRollbackException
    java.sql.SQLTransientConnectionException
    java.sql.SQLTransientException
    java.sql.SQLWarning

    二、javax.sql包

    #数据源
    javax.sql.DataSource  //数据源  用于获取Connection实例
    javax.sql.CommonDataSource
    
    #连接池相关
    javax.sql.ConnectionPoolDataSource
    javax.sql.PooledConnection
    javax.sql.ConnectionEvent
    javax.sql.ConnectionEventListener
    javax.sql.StatementEvent
    javax.sql.StatementEventListener
    
    #ResultSet扩展
    javax.sql.rowset.*  //里面含有JAVA SPI机制
    javax.sql.RowSet   //为数据源和应用程序内容之间建立一个映射
    javax.sql.RowSetEvent
    javax.sql.RowSetInternal
    javax.sql.RowSetListener
    javax.sql.RowSetMetaData
    javax.sql.RowSetReader
    javax.sql.RowSetWriter
    
    #分布式扩展
    javax.sql.XAConnection
    javax.sql.XADataSource

    参考:

    书籍:<<Mybatis3源码深度解析>>
    资料:mybatis3源码深度解析与最佳实践

  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/cac2020/p/12912719.html
Copyright © 2011-2022 走看看