源码git地址:https://github.com/mybatis/mybatis-3

目标结构:

  mybatis是数据持久化解决方案将用户从JDBC访问中解放出来,用户只需要定义需要操作的SQL语句,无需关注底层JDBC操作,就可以以面向对象的方式来进行持久层操作,底层数据库的连接获取,数据库访问的实现,事务控制等都无须用户关心。本章学习mybatis中的常见对象SqlSessionFactory和SqlSession

  一SqlSessionFactory

  SqlSessionFactory是mybatis的关键对象,它是单个数据库映射关系经过编译后的内存镜像,SqlSessionFactory可以通过SqlSessionFactoryBuild对象类获取,而SqlSessionFactoryBuild则可以从xml配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例,每一个mybatis的应用程序都以一个SqlSessionFactory对象的实例为核心,sqlSessionFactory也是线程安全的,SqlSessionFactory一旦被创建,在应用执行期间都存在,不宜重复创建多次,推荐使用单例模式,SqlSessionFactory是创建SqlSession的工厂。

 SqlSessionFactory:接口源码

public interface SqlSessionFactory {

  SqlSession openSession();//用来创建SqlSession

  SqlSession openSession(boolean autoCommit);

  SqlSession openSession(Connection connection);

  SqlSession openSession(TransactionIsolationLevel level);

  SqlSession openSession(ExecutorType execType);

  SqlSession openSession(ExecutorType execType, boolean autoCommit);

  SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);

  SqlSession openSession(ExecutorType execType, Connection connection);

  Configuration getConfiguration();

}

   在Spring中构建SqlSessionFactory:

   通过@Bean配置一个DataSource类,构造一个SqlSessionFactoryBean实例通过setDataSource()将DataSource绑定,通过getObject()方法创建SqlSessionFactory对象

  二、SqlSession

  SqlSession也是mybatis中的重要对象,是持久化操作的独享。类似于jdbc中的Connection,它是应用程序与持久层之间执行互操作的一个单线程对象,也是Mybatis执行持久化操作的关键对象,SqlSession对象完全包含以数据库为背景的所执行SQL操作方法。底层封装了JDBC连接,可以用SqlSession的实例对来执行被映射的SQL语句,每个线程有他自己的SqlSession实例,SqlSession的实例不能被共享,SqlSession也不是线程安全的,绝对不能将SqlSession实例的引用放在任何类型的管理范围中,使用完SqlSession之后关闭Session很重要,放在finally块来关闭它。

最新文章

  1. R:incomplete final line found by readTableHeader on
  2. input标签name与value区别
  3. 【BZOJ 3527】【ZJOI 2014】力
  4. 看见了就转来了, 涉及到UBOOT 地址的一个问题.
  5. 省市联动Demo
  6. CSS3中text-overflow支持以...代替超出文本
  7. Unity该插件NGUI得知(9)—— Tween并转换成世界坐标系的大小NGUI尺寸
  8. 检索字符创 php
  9. nxlog4go 简介 - 基于log4go的下一代go语言日志系统
  10. Python强大的格式化format
  11. sqlite3 语法
  12. ABP框架系列之三十七:(Navigation-导航)
  13. python 全栈开发,Day123(图灵机器人,web录音实现自动化交互问答)
  14. oracle单行函数 之 通用函数
  15. eclipse安装springboot插件
  16. [Unity插件]Lua行为树(五):装饰节点Repeater
  17. Modbus常用功能码协议详解
  18. js访3d上下轮播图
  19. [工作代码]dom4j解析实例
  20. react阻止默认事件

热门文章

  1. ACM/IOI 国家队集训队论文集锦
  2. css将两个元素水平对齐,兼容IE8
  3. Java面试之基础篇(2)
  4. React Native 中吐司组件react-native-easy-toast
  5. Dancing Stars on Me
  6. 北风设计模式课程---最少知识原则(Least Knowledge Principle)
  7. 高通Camera bring up软件流程【转】
  8. 源码编译安装Apache/2.4.37-------踩了无数坑,重装了十几次服务器才会的,不容易啊!
  9. 局域网IP耗尽
  10. CSS - 初始值、指定值、计算值、应用值、实际值