Mybatis原生API的执行流程

                             Mybatis原生API的执行流程


目录

                             Mybatis原生API的执行流程

MyBatis和数据库的交互有两种方式:

   a.使用传统的MyBatis提供的API;

   b. 使用Mapper接口

使用Mapper接口底层源码详解


 Class 字节码是给虚拟机使用的 Class文件 是给程序猿使用 是类的信息

2019-05-12 19:01:10 DEBUG org.apache.ibatis.logging.LogFactory:135 - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:335 - PooledDataSource forcefully closed/removed all connections.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:137 - Opening JDBC Connection
2019-05-12 19:01:10 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:406 - Created connection 1123629720.
2019-05-12 19:01:10 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:101 - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@42f93a98]
2019-05-12 19:01:11 DEBUG com.xxx.yyy.deleteUser:159 - ==>  Preparing: delete from t_user where id=? 
2019-05-12 19:01:11 DEBUG com.xxx.yyy.deleteUser:159 - ==> Parameters: 10(Integer)
2019-05-12 19:01:11 DEBUG com.xxx.yyy.deleteUser:159 - <==    Updates: 1
2019-05-12 19:01:11 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:70 - Committing JDBC Connection [com.mysql.jdbc.JDBC4Connection@42f93a98]
2019-05-12 19:01:11 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:123 - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@42f93a98]
2019-05-12 19:01:11 DEBUG org.apache.ibatis.transaction.jdbc.JdbcTransaction:91 - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@42f93a98]
2019-05-12 19:01:11 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource:363 - Returned connection 1123629720 to pool.

MyBatis和数据库的交互有两种方式:

   a.使用传统的MyBatis提供的API;

   b. 使用Mapper接口


 简单介绍下原生API的执行流程

1. 加载配置文件并初始化(SqlSession)

配置文件来源于两个地方,一个是配置文件(主配置文件conf.xml,mapper文件*.xml),一个是java代码中的注释,将sql的配置信息加载成为一个mappedstatement对象,存储在内存之中(包括传入参数的映射配置,结果映射配置,执行的sql语句)。

2. 接收调用请求

调用mybatis提供的api,传入的参数为sql的id(有namespase和具体sql的id组成)和sql语句的参数对象,mybatis将调用请求交给请求处理层。

3. 处理请求

根据sql的id找到对应的mappedstatament对象。

根据传入参数解析mappedstatement对象,得到最终要执行的sql。

获取数据库连接,执行sql,得到执行结果

Mappedstatement对象中的结果映射对执行结果进行转换处理,并得到最终的处理结果。

释放连接资源

4. 返回处理结果


使用Mapper接口底层源码详解

用接口和目标对象都可以生成代理对象

   1.创建一个接口,接口中有增删改查的方法

                2.创建一个子清单文件,要求必须namespace="包名.接口名"

                       接口方法名等于id的名称

                       接口方法的参数跟parameterType匹配

                       接口方法的返回值跟resultType匹配

                 3.在总清单文件中

                     

      4.在需要地方:

               接口类型    jdk动态代理对象=sqlSession.getMapper(接口类型.class);

               返回类性 返回对象数据=jdk动态代理对象.目标方法();

你可能感兴趣的:(Mybatis)