青菜

首页 » 常识 » 问答 » MyBatis的执行流程,写得太好了
TUhjnbcbe - 2021/4/4 17:07:00
前言

MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:

1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandler

PS:本文基于MyBatis3.5.5版本源码。

概要

在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:

SqlSessionsession=sqlSessionFactory.openSession();UserMapperuserMapper=session.getMapper(UserMapper.class);ListLwUseruserList=userMapper.listUserByUserName("孤狼1号");

第一行是获取一个SqlSession对象在上一篇文章分析过了,想要详细了解的可以点击这里,第二行就是获取UserMapper接口,第三行一行代码就实现了整个查询语句的流程,接下来我们就来仔细分析一下第二和第三步。

获取Mapper接口(getMapper)

第二步是通过SqlSession对象是获取一个Mapper接口,这个流程还是相对简单的,下面就是我们调用session.getMapper方法之后的运行时序图:

1、在调用getMapper之后,会去Configuration对象中获取Mapper对象,因为在项目启动的时候就会把Mapper接口加载并解析存储到Configuration对象2、通过Configuration对象中的MapperRegistry对象属性,继续调用getMapper方法3、根据type类型,从MapperRegistry对象中的knownMappers获取到当前类型对应的代理工厂类,然后通过代理工厂类生成对应Mapper的代理类

搜索公纵号:MarkerHub,

1
查看完整版本: MyBatis的执行流程,写得太好了