mybatis学习总结(一)——简介
基本构成
- 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学习总结(一)——简介的更多相关文章
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...
- MyBatis学习 之 四、MyBatis配置文件
目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...
- MyBatis学习 之 三、动态SQL语句
目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
- mybatis 学习笔记(一):mybatis 初认识
mybatis 学习笔记(一):mybatis 初认识 简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 prepar ...
- mybatis学习笔记(一)
mybatis学习笔记 mybatis简介 Mybatis 开源免费框架.原名叫iBatis,2010在googlecode,2013年迁移到 github 作用: 数据访问层框架,底层对JDBC进行 ...
- Mybatis学习笔记大纲
Mybatis学习笔记大纲: 一.MyBatis简介 二.MyBatis-HelloWorld 三.MyBatis-全局配置文件 四.MyBatis-映射文件 五.MyBatis-动态SQL 六.My ...
- Mybatis学习笔记导航
Mybatis小白快速入门 简介 本人是一个Java学习者,最近才开始在博客园上分享自己的学习经验,同时帮助那些想要学习的uu们,相关学习视频在小破站的狂神说,狂神真的是我学习到现在觉得最GAN的老师 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
随机推荐
- Mysql之禁止使用索引
禁止使用索引:ignore index---------------------强制使用索引: force index mysql> explain select * from userinfo ...
- Spring定义的五种事务隔离级别
在Spring中定义了5中不同的事务隔离级别. 1. ISOLATION_DEFAULT(一般情况下使用这种配置既可) 这是一个PlatfromTransactionManager默认的隔离级别,使用 ...
- 【Eclipse】Eclipse中tomcat的Server配置(解决修改代码不断的重启服务器)以及设置tomcat文件发布位置与JSP编译位置查看
Eclipse有时候修改一点JS或者JSP都会自动重启,有时候修改完JS或者JSP之后必须重启服务器才生效,下面研究了server的一些选项之后彻底解决了这些问题,下面做记录: 我的 Eclipse ...
- 【MFC】定时器的使用(转)
原文转自 http://blog.csdn.net/hellozhd/article/details/8213359 在对话框中使用定时器: 1.定义定时器 #define TIMER1 1 2.开启 ...
- Linux 虚拟地址与物理地址的映射关系分析【转】
转自:http://blog.csdn.net/ordeder/article/details/41630945 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文 ...
- 标准C程序设计七---66
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- LeetCode OJ——Pascal's Triangle II
http://oj.leetcode.com/problems/pascals-triangle-ii/ 杨辉三角2,比杨辉三角要求的空间上限制Could you optimize your algo ...
- css-通过css让块显示或隐藏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wangzhi
http://blog.const.net.cn/a/9145.htm http://blog.sina.com.cn/s/blog_bf5abc95010169jf.html http://ciss ...
- 安装部署k8s-版本-1.13
1.环境准备 # 统一hosts cat /etc/hosts 10.0.0.10 k8s-master 10.0.0.20 k8s-node1 10.0.0.30 k8s-node2 # 同步时间 ...