基本构成

  • SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
  • SqlSessionFactory:依靠工厂来生成SqlSession(会话)
  • SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口
  • SQL Mapper:它是Mybatis新设计的组件,它是由一个java接口和xml文件(或注解)构成的,需要给出对应的sql和映射规则,它负责发送SQL去执行,并返回结果

SqlSessionFactory

SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder获得
SqlSessionFactory是一个工厂接口而不是实现类,它的任务是创建SqlSession,Sqlsession类似于一个JDBC的Connection对象

Configuration类

org.apache.ibatis.session.Configuration类,他是Mybatis中将一个Configuration类对象的形式存在,而这个个对象将存在于整个Mybatis应用的生命期中,以便重复读取和运用。在内存中的数据是读取速度最快的,我们可以解析一次配置的XML文件保存到Configuration类对象中,方便我们从这个对象中服务配置信息,性能高,单例占用空间小,可以反复使用

Mybaits提供了两个SqlSessionFactory实现类,DefaultSqlSessionFactory和SqlSessionManager,不过这个SqlSessionManager目前还没有使用,目前使用的是DefaultSqlSessionFactory

SqlSession

SqlSession是一个接口类,它类似于你们公司前台的美女客服,它扮演着门面的作用,而真正干活的Executor,你可以认为它是公司的工程师,假设我是客户找你们公司干活,我只需要告诉前台的美女客服,我要什么信息,要做什么,过段时间,她会将结果给我,我不关心工程师是怎么工作的,这个步骤对我来说是黑箱操作

SqlSession用途

  • 获取映射器,让映射器通过命名空间和方法名找到对应的SQL,发送给数据库执行后返回结果
  • 直接通过命名信息去执行SQL返回结果

映射器

映射器是由java和xml文件(或注解)共同组成的它有如下作用:

  • 定义参数类型
  • 描述缓存
  • 描述SQL语句
  • 定义查询结果和POJO对应关系

推荐XML文件配置方式的原因

  • java注解是受限的,功能少,使用xml更加强大灵活
  • 如果sql很负责,条件很多,存在动态sql的时候,写在java文件里面可读性差

生命周期

SqlSessionFactoryBuilder

SqlSessionFactoryBuilder是用于获得资源来构建SqlSessionFactory的,一旦我们创建了SqlSessionFactory,它的作用就已经完结,失去了存在的意义,这是我们应该废弃它,将它回收

所以它的生命周期只存在于方法的局部,它的作用就是生成SqlSessionFactory对象

SqlSessionFactory

SqlSessionFactory的作用是创建SqlSession

所以SqlSessionFactory应该在mybatis应用的整个生命周期中

我们采取单例模式,每一个数据库只对应一个SqlSessionFactory

SqlSession

SqlSession是一个会话

它的生命周期应该是在请求数据库处理事务的过程中,它是一个线程不安全的对象

在涉及多线程操作的时候我们需要当心,操作数据库需要注意其隔离级别,数据库锁等高级特性

我们往往通过finally语句块保证我们正确的关闭SqlSession

Mapper

Mapper是一个接口,没有任何实现类

它应该在一个SqlSession事务方法之内,是一个方法级别的东西

mybatis学习总结(一)——简介的更多相关文章

  1. MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql

    目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...

  2. MyBatis学习 之 四、MyBatis配置文件

    目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...

  3. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

  4. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  5. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

  6. mybatis 学习笔记(一):mybatis 初认识

    mybatis 学习笔记(一):mybatis 初认识 简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 prepar ...

  7. mybatis学习笔记(一)

    mybatis学习笔记 mybatis简介 Mybatis 开源免费框架.原名叫iBatis,2010在googlecode,2013年迁移到 github 作用: 数据访问层框架,底层对JDBC进行 ...

  8. Mybatis学习笔记大纲

    Mybatis学习笔记大纲: 一.MyBatis简介 二.MyBatis-HelloWorld 三.MyBatis-全局配置文件 四.MyBatis-映射文件 五.MyBatis-动态SQL 六.My ...

  9. Mybatis学习笔记导航

    Mybatis小白快速入门 简介 本人是一个Java学习者,最近才开始在博客园上分享自己的学习经验,同时帮助那些想要学习的uu们,相关学习视频在小破站的狂神说,狂神真的是我学习到现在觉得最GAN的老师 ...

  10. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

随机推荐

  1. javaweb学习总结(十四)——JSP原理(转)

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  2. UVa11424 GCD - Extreme (I)

    直接两重循环O(n^2)算gcd……未免太耗时 枚举因数a和a的倍数n,考虑gcd(i,n)==a的i数量(i<=n) 由于gcd(i,n)==a等价于gcd(i/a,n/a)==1,所以满足g ...

  3. gitlab 安装遇到 fatal:does not appear to be a git repository fatal: Could not read from remote repository. 问题

    Cloning into 'door_lock_bsp'... git@192.168.1.5's password:  fatal: 'door_lock/door_lock_bsp.git' do ...

  4. Lucene.net站内搜索-最简单搜索引擎代码

    Lucene.Net核心类简介 先运行写好的索引的代码,再向下讲解各个类的作用,不用背代码. (*)Directory表示索引文件(Lucene.net用来保存用户扔过来的数据的地方)保存的地方,是抽 ...

  5. Android之观察者/被观察者模式Observer/Observable

    Android 本身也是有观察者模式的.虽然项目中很多需要通知数据改变的地方,用了EventBus,但是不得不说这个观察者模式还是很好用的.最近在开发新版本的时候引用了腾讯的IM,之前写直播的时候就用 ...

  6. osstatus -9801 workerman websocket 小程序不带端口

    帮事业部的同事,解决问题,坑总结 小程序出现,osstatus -9801 情况好多,说一下配置环境可解决的方法和问题 tls 1.2, php 5.6+, nginx, workerman 做的 w ...

  7. [笔记][FPGA]有限状态机FSM学习笔记(三)

    0. 简介 在数电FPGA中,FSM是一个重要的部分,藉此可以完成一些复杂算法的硬件实现等.其中有关于FSM的写法按照always块的个数来划分,又分为一段式.两段式.三段式状态机.顾名思义,一段式就 ...

  8. BZOJ——1622: [Usaco2008 Open]Word Power 名字的能量

    http://www.lydsy.com/JudgeOnline/problem.php?id=1622 Description     约翰想要计算他那N(1≤N≤1000)只奶牛的名字的能量.每只 ...

  9. Play框架连接Mysql遇到的一些问题

    最近,在基于Play框架的项目中需要连接Mysql数据库.在这个过程中遇到了一些问题.在此,把它记录下来. 首先,Play框架和Mysql连接有两种方式,这两种方式都是在application.con ...

  10. Cesium 显示CZML数据

    转自文章 Cesium随笔(5)CZML介绍(介个文章是转的嘿嘿) 通过czml可以在cesium上实现非常棒的动态效果   CZML的结构   CZML是一种用来描述动态场景的JSON架构的语言,主 ...