selectOne()最终也是调用了selectList()。

在SelectList()中,我们先根据command name(Statement ID)从Configuration中拿到MappedStatement,这个ms 上面有我们在xml 中配置的所有属性,包括id、statementType、sqlSource、useCache、入参、出参等等。

然后执行了Executor 的query()方法

前面我们说到了Executor 有三种基本类型,同学们还记得是哪几种么?

SIMPLE/REUSE/BATCH,还有一种包装类型,CachingExecutor。

那么在这里到底会选择哪一种执行器呢?

我们要回过头去看看DefaultSqlSession 在初始化的时候是怎么赋值的,这个就是我们的会话创建过程。

如果启用了二级缓存,就会先调用CachingExecutor 的query()方法,里面有缓存相关的操作,然后才是再调用基本类型的执行器,比如默认的SimpleExecutor。

在没有开启二级缓存的情况下,先会走到BaseExecutor 的query()方法(否则会先走到CachingExecutor)。

执行SQL-DefaultSqlSession.selectOne()相关推荐

  1. mybatis 创建session, 缓存, 执行SQL

    案例代码, 上一个博客已经分析了 SqlSessionFactory 的 build , 本文内容部分知识基于上篇的文章 mybatis 的初始化, build 这节我们分析, 开启session, ...

  2. 可执行SQL文的mybatis工具类

    1.创建工具类  import org.apache.ibatis.builder.StaticSqlSource; import org.apache.ibatis.exceptions.TooMa ...

  3. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  4. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  5. MyBatis直接执行SQL的工具SqlMapper

    可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决. 能否通过MyBatis实现这样的功能呢? 为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2 ...

  6. MyBatis执行sql的整个流程

    MyBatis执行sql的整个流程 大致过程:启动->解析配置文件->创建executor->绑定参数->执行sql->结果集映射 扫描配置 @MapperScan,配置 ...

  7. mysql 执行cmd,mysql命令行中执行sql的几种方式总结

    1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...

  8. mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结

    本文主要向大家介绍了MySQL数据库之mysql命令行中执行sql的几种方式总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.直接输入sql执行 MySQL> se ...

  9. 一起谈.NET技术,linq2sql:直接执行sql语句

    1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该&quo ...

  10. mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

最新文章

  1. led灯串怎么摆造型_一元包邮的家用LED日光灯泡,究竟是怎么做到的?
  2. eslint不报错 vue_【简易教程】基于Vue-cli使用eslint指南
  3. oracle的java路径,oracle学习----访问路径
  4. C语言 链表实现学生管理系统(含文件读写操作)
  5. mysql8報錯解決方案彙總(持續更新中)
  6. html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传
  7. matlab背景点状,基于MATLAB的点状目标检测
  8. 从零开始学C++之运算符重载(三):完善String类([]、 +、 += 运算符重载)、和运算符重载...
  9. word20161219
  10. 关于angularJS绑定数据时自动转义html标签
  11. oracle 修改sga参数,oracle 参数文件的修改,sga pga参数的修改
  12. 如何启用sqlplus的AutoTrace功能
  13. Python-nmap 使用文档
  14. android os 2.2刷机包,N1内置CoreELEC9.2.2、安卓7.1.2双系统刷机包,全功能刷机包V2.2...
  15. win10配置计算机环境变量,教你win10怎么设置环境变量
  16. 我是SPI,我让框架更加优雅了!
  17. SSH密匙key介绍
  18. [开源]蚂蚁森林自动收能量,自动解锁和自动触发
  19. 重庆文理学院计算机公众号,重庆文理学院各微信公众号影响力排行榜新鲜出炉啦!!!...
  20. Mysql删除分区,增加分区,分区数据清理

热门文章

  1. C#:关于双引号的输出
  2. Spark分区器HashPartitioner和RangePartitioner代码详解
  3. matlab中特殊符号如希腊字符
  4. js-ES6学习笔记-module(2)
  5. Cocos2D-x(3)——动作类备忘
  6. 如何在Jsp上传图片
  7. 《Man Vs wild》 Notes-法国阿尔卑斯山
  8. iOS开发事件分发机制—响应链—手势影响
  9. java中VO、PO、DTO 、DO、POJO、BO、TO
  10. python函数与函数式编程