MyBatis学习及理解

1.Mybatis简介

  1. MyBatis是一款优秀的持久层框架,他支持定制化SQL文件、存储过程以及高级映射。避免了JDBC代码和手动设置参数以及获取结果集,Mybatis可以使用XML和注解来配置映射信息

2.框架特点

  1. 简单易学,
  2. 灵活,
  3. 解除了sql语句和代码的耦合性,提高了可维护性
  4. 支持动态编写SQL

3.MyBatis核心

  1. Configuration:Mybatis的配置信息都在Configuration中
  2. SqlSessionFactory:专门创建SqlSession的工厂
  3. SqlSession:主要与数据库进行交互,完成数据的增删改查
  4. Exexutor:Mybatis执行器,是Mybatis调度的核心,生成Sql语句,
  5. SqlSessionFactoryBuilder:读取mybatis-config.xml中的配置信息,生成SqlSession

4.mybatis原理图

5.执行原理:

  1. 通过Resources加载配置好的mybatis-config.xml配置文件
  2. 通过new的SqlSessionFactoryBuild构建出了SqlSessionFactory,调用build()方法,会发现XMLconfigBuilder,他是用来解析XML的也是构建者,通过parse方法解析xml
  3. 解析完成之后返回Configuration对象,存放mybatis核心配置文件解析完成的结果,返回一个SqlSessionFactory的实现类,传入DefaultSqlSession对象,(采用构建者模式,直接把对象传给SqlSessionFactoryBuilder
  4. 调用openSession()方法,会有一个返回值是SqlSession的方法,在SqlSsession中涉及到了事务的操作,通过transactiontory的参数产生了transcction(事务),其中还有一个executor,是一个接口(执行器),是mybatis核心执行器。发送Sql语句并执行,得到SqlSession
  5. JDK动态代理生成mapper接口和mapper接口的代理实现类,调用的方法是MapperProxyinvoke()方法,确定需要的方法,

最新文章

  1. 45分钟带你入门Linux(附:笔者在工作室开讨论班录制的视频讲解)
  2. Python 类(一)
  3. ecshop 的transport.js 与jqueyr冲突
  4. CommandExtra.lua --游戏命令扩展
  5. Django model 中meta options之 abstract
  6. 关于Cygwin——包管理、替换默认终端、同MSYS的比较
  7. utf8汉字编码16进制对照
  8. CSS3 背景
  9. IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
  10. 开源项目Material Calendar View 学习记录 (一)
  11. (六)boost库之内存管理shared_ptr
  12. SpringMVC 学习-返回字符串中文乱码问题解决
  13. 【BZOJ5499】[2019省队联测]春节十二响(贪心)
  14. @mentions for Users with ActionText; 使用Tribute.js库
  15. javascript高级程序设计第3版——第3章 基本概念
  16. 使用openssl创建一个自签名https证书,并配置到nginx里面
  17. 去除input默认带的上下按钮与修改placeholder的默认颜色、背景、placeholder内容的大小
  18. 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
  19. unity 向量赋值 传引用?传值?
  20. C# 获取文件图标

热门文章

  1. MongoDB - 简单了解
  2. vulnhub靶场之NOOB: 1
  3. MyBatis&Spring Framrwork
  4. 用map来统计数组中各个字符串的数量
  5. Jenkins发版通知企业微信机器人
  6. hwlog--logger.go
  7. gin-k8s 运行的问题
  8. 基于python的数学建模---多模糊评价
  9. [排序算法] 堆排序 (C++)
  10. PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)