DefaultSqlSession#selectOne()//执行单记录DefaultSqlSession#selectList()//查询列表CachingExecutor#query() MappedStatement#getBoundSql()//获取SQL语句CachingExecutor#query()//二级缓存查询CachingExecutor.delegate = SimplyExecutor//装饰设计模式:Caching的对SimpleExecutor查询加二级缓存装饰SimplyExecutor#query() Base...
一、MyBatis中Sql执行过程 先上一段代码,看直接调用MyBatisApi是如何执行Sql的: 代码语言:javascript 复制 // 获取配置文件输入流InputStream inputStream=Resources.getResourceAsStream("META-INF/spring/mybatis-config.xml");// 通过SqlSessionFactoryBuilder的build()方法创建SqlSessionFactory实例SqlSessionFactory sqlS...
3、接下来,是构造一个MapperMethod对象,这个对象封装了Mapper接口中对应的方法信息以及对应的sql语句信息: 这里面就会把要执行的sql语句,请求参数,方法返回值全部解析封装成MapperMethod对象,然后后面就可以开始准备执行sql语句了 执行sql语句 还是先来看一下执行Sql语句的时序图: 1、我们继续上面的流程进入execute方法: ...
Mybatis是如何执行一条SQL命令 Mybatis中的Sql命令,在枚举类SqlCommandType中定义的。 public enum SqlCommandType { UNKNOWN, INSERT, UPDATE, DELETE, SELECT, FLUSH; } 下面,我们以Mapper接口中的一个方法作为例子,看看Sql命令的执行完整流程。 public interface StudentMapper { List<Student> findAllStudents(Map<...
本节主要介绍 MyBatis 执行 SQL 语句的两种方式和它们的区别。 MyBatis 有两种执行 SQL 语句的方式,如下: 1.通过 SqlSession 发送 SQL 2.通过 SqlSession 获取 Mapper 接口,通过 Mapper 接口发送 SQL 1.SqlSession发送SQL 直接通过“命名空间(namespace)+SQL id”的方式执行 SQL,不需要获取映射器。
下面来对 SqlSessionFactory 的执行流程来做一个分析 首先第一步是 SqlSessionFactory 的创建 SqlSession...
MapperMethod 的主要功能是执行 SQL 语句的相关操作,在初始化的时候会实例化两个对象:SqlCommand(Sql 命令)和 MethodSignature(方法签名)。 /** * 根据Mapper接口类型、接口方法、核心配置对象 构造MapperMethod对象 * @param mapperInterface * @param method ...
MyBatis中有两种SQL语句的执行方式,如下: 1.通过SqlSession发送SQL语句, 例如:sqlSession.slectone()的形式。 2.通过SqlSession获取Mapper接口,通过Mapper接口发送SQL语句, 例如:sqlSession.getMapper()的形式。 一、封装工具类 封装一个类SqlSession工具类,用于生产SqlSession对象,下面的例子为了节省代码将会使用我们封装的...