Mybatis的执行器

下面先展示一张图,用来说明一下Mybatis执行器的整体架构

SimpleExecutor

首先SimpleExecutor是我们最常使用的一个执行器,无论我们执行什么方法默认调用的都是SimpleExecutor

下面是基本使用,这里可能会比较懵了,哪里来的configuration,doQuery,RowBounds,ResultHandler,BoundSql

在这里我来一一解释

SimpleExecutor simpleExecutor = new SimpleExecutor(configuration, transaction);
MappedStatement ms = configuration.getMappedStatement("com.guan.ibatis.mapper.UserMapper.queryUsersInfo");
BoundSql boundSql = ms.getBoundSql(null);
List<User> users = simpleExecutor.doQuery(ms, null,
RowBounds.DEFAULT, SimpleExecutor.NO_RESULT_HANDLER, boundSql);
users.forEach(System.out::println);
  1. configuration我们读取配置文件使用SqlSessionFactoryBuilder来构建,而配置文件(Mybatis-config.xml)解析后就会将解析完的所有数据放到一个名为Configuration的类里面,我们的一些操作,比如设置Setting,设置数据源,设置映射文件,都可以通过new Configuration()来进行配置,而获取Configuration的实力,只需要我们SqlSessionFactoryBuilder.build()所创建的SqlSessionFactory就可以获取Configuration了--->SqlSessionFactory.getConfiguration()
  2. doQuery是BaseMapper的一个抽象方法,分别由三个子类进行实现,是最基本的查询方法,无论调用什么查询方法都会调用doQuery这个方法
  3. RowBounds分页条件,我们可以new RowBounds()来自定义分页条件,而RowBounds.DEFAULT就是new一个0-Integer.MAX_VALUE的RowBounds
  4. ResultHandler结果处理器
  5. BoundSql我们编写的sql语句,获取方法:ms.getBoundSql()没有参数就可以传null
  6. ms就是MappedStatement获取我们对应方法的属性,参数为statementid(包名.类名.方法名)

MyBatis执行器的更多相关文章

  1. Mybatis执行器源码手记

    今天将Mybatis的执行器部分做一下简单手记. 一.java原生JDBC 众所周知,Mybatis是一个半自动化ORM框架.其实说白了,就是将java的rt.jar的JDBC操作进行了适度的封装.所 ...

  2. MyBatis源码分析-SQL语句执行的完整流程

    MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...

  3. MyBatis框架及原理分析

    MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 MyBatis的主要设计目的就 ...

  4. MyBatis学习笔记1--初识MyBatis

    我也是初学者,写博客只是想把自己的整个思路整理一下,有不对或者不好的地方,请大家多多指正. 1.MyBatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...

  5. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

    作者博客:http://blog.csdn.net/u010349169/article/category/2309433 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简 ...

  6. SSM-MyBatis-06:Mybatis中openSession到底做了什么

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 1.找SqlSesionFactory实现类 Ctrl+H:DefaultSqlSessionFactory: ...

  7. mybatis原理分析学习记录,mybatis动态sql学习记录

    以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...

  8. MyBatis学习总结(一)——ORM概要与MyBatis快速起步

    程序员应该将核心关注点放在业务上,而不应该将时间过多的浪费在CRUD中,多数的ORM框架都把增加.修改与删除做得非常不错了,然后数据库中查询无疑是使用频次最高.复杂度大.与性能密切相关的操作,我们希望 ...

  9. mybatis(一、原理,一对多,多对一查询)

    MyBatis框架及原理分析 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 ...

随机推荐

  1. HashSet、CopyOnWriteArraySet、ConcurrentSkipListSet源码解析(JDK1.8)

    目录 HashSet源码解析 HashSet简单使用的demo HashSet中的变量 HashSet的构造函数 HashSet的add方法 HashSet的iterator方法 HashSet的si ...

  2. JAVAEE_01_什么是javaEE

    javaEE Java平台包含三个版本: - JavaME :适用于小型设备和智能卡的JavaME (Java Platform Micro Edition,Java微型版) - JavaSE : 适 ...

  3. Day07_37_深度剖析集合中的contains()方法

    深度剖析集合中的 contains()方法 contains()方法查找集合中是否包含某个元素 contains() 底层使用的是 equals()方法 当contains()方法拿到一个对象的时候, ...

  4. 构建基于表单配置的 Jenkins 测试项目(接口、UI、APP、Jmeter)

    1. 第一个 hello world 项目 2. 构建自动触发的项目(接口测试) 1)新建测试项目(执行测试脚本) 2)新建 Maven 打包项目 3)手动执行构建 4)修改 Web 工程代码并 pu ...

  5. 解决github不能访问的问题

    亲测有效,授之以鱼不如授之以渔,网上看了很多方法,也试着做了,很多都是治标不治本,最后找到个靠谱的方式:利用DNS查询工具,找到最快的IP地址,然后把host地址换成查询到的结果,方法如下: 在系统的 ...

  6. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  7. Maven关于web.xml中Servlet和Servlet映射的问题

    在配置Servlet时,有两个地方需要配置. 一个是<servlet>,另一个是<servlet-Mapping>,这两个一个是配置Servlet,一个是配置其映射信息. &l ...

  8. java-处理大容量文本文件,行内分格符为TAB的方法

    以处理某sql文件为例 源文件中行格式为: 123456 7895433 xxxxx  yyyyy zzzzz 行间分隔符为 TAB. 转换完后文件中行的格式为: 123456,7895433,xxx ...

  9. JVM垃圾回收的三种方式

    * 垃圾回收有三种方式 * 一.清除:将需要回收对象的内存空间存放在内存列表中,当需要为新对象分配内存的时候,就会从内存列表中拿取空间分配.不过这种分配方式有两个缺点 * 第一个缺点是内存空间碎片化, ...

  10. 基于RestAssured实现接口自动化

    RestAssured是一款强大的接口自动化框架, 旨在使用方便的DSL,简化的接口自动化. 下面是基于RestAssured扩展的一个简单框架示例, 先看看用例的风格: package testca ...