一、MyBatis中Sql执行过程 先上一段代码,看直接调用MyBatisApi是如何执行Sql的: 代码语言:javascript 复制 // 获取配置文件输入流InputStream inputStream=Resources.getResourceAsStream("META-INF/spring/mybatis-config.xml");// 通过SqlSessionFactoryBuilder的build()方法创建SqlSessionFactory实例SqlSessionFactory sqlS...
MapperMethod 的主要功能是执行 SQL 语句的相关操作,在初始化的时候会实例化两个对象:SqlCommand(Sql 命令)和 MethodSignature(方法签名)。 /** * 根据Mapper接口类型、接口方法、核心配置对象 构造MapperMethod对象 * @param mapperInterface * @param method * @param config */ public MapperMethod(Class<?> map...
别急,还没完, 咱们还没看具体是怎么执行sql语句的呢。 3. Excutor: 接下来,咱们才要真正去看sql的执行过程了。 上面,咱们拿到了MapperProxy, 每个MapperProxy对应一个dao接口, 那么咱们在使用的时候,MapperProxy是怎么做的呢? 源码奉上: MapperProxy: /** * MapperProxy在执行时会触发此方法 */ @Override p...
这里面就会把要执行的sql语句,请求参数,方法返回值全部解析封装成MapperMethod对象,然后后面就可以开始准备执行sql语句了 执行sql语句 还是先来看一下执行Sql语句的时序图: 1、我们继续上面的流程进入execute方法: 2、这里面会根据语句类型以及返回值类型来决定如何执行,本人这里返回的是一个集合,故而我们进入executeFor...
mybatis-执行sql流程 一、获取mapper代理对象 DefaultSqlSession.getMapper(Classtype) public<T> TgetMapper(Class<T>type) {returnconfiguration.getMapper(type,this); } Configuration.getMapper(Classtype, SqlSession sqlSession) public<T> TgetMapper(Class<T>type, SqlSession sqlSession) {returnmapperRegistry....
MappedStatement封装的是我们的SQL语句; 方法内部执行的是executor的query方法。 方法二入口分析 方法二调用的是SqlSession接口的getMapper(Classtype)方法: 我们实际调用的是DefaultSqlSession实现类中的方法: 此方法内部又调用了 configuration.<T>getMapper(type,this); ...
MyBatis源码之MyBatis中SQL语句执行过程 SQL执行入口 我们在使用MyBatis编程时有两种方式: 方式一代码如下: SqlSession sqlSession = sqlSessionFactory.openSession(); List<Student> studentList = sqlSession.selectList("com.sjdwz.dao.StudentMapper.findAll"); ...
1、Mapper接口和映射文件是如何进行绑定的 2、MyBatis中SQL语句的执行流程 3、自定义MyBatis中的参数设置处理器typeHandler 4、自定义MyBatis中结果集处理器typeHandler PS:本文基于MyBatis3.5.5版本源码 - 概要 - 在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码: ...
一个完整的Sql命令,其执行的完整流程图如下: MapperProxy的功能: 1.因为Mapper接口不能直接实例化,MapperProxy的作用,就是使用JDK动态代理功能,间接实例化Mapper的proxy对象。可参看系列的第二篇。 2.缓存MapperMethod对象。 private final Map<Method, MapperMethod> methodCache; @Override public Object invoke(Obje...
中的 build 方法传递一个InputStream 输入流,Inputstream 输入流中就是你传过来的配置文件mybatis-...