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

posted @ 2020-05-18 20:12  cac2020  阅读(268)  评论(0编辑  收藏  举报