• 【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源码深度解析与最佳实践

  • 相关阅读:
    mysql 索引
    私有变量 _变量名 、__变量名、__变量名__的区别
    python中 is 和 == 的区别
    赋值,浅拷贝,深拷贝
    Django model字段类型清单
    (转)nginx uwsgi wsgi django 这些东西究竟是什么关系
    线性结构
    复杂度_最大子列和问题(2)
    复杂度_最大子列和问题(1)
    应用实例——最大子列和问题
  • 原文地址:https://www.cnblogs.com/cac2020/p/12912719.html
Copyright © 2020-2023  润新知