MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

    Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

二、mybatis和hibernate的区别:

hibernate:它是一个ORM框架,自动化程度高,不用写sql语句,学习成本也高,编写代码的效率也高。
应用场景: 外包公司用的较多, 还有做传统企业项目(oa, erp, crm)。
mybatis:它是一个不完全的orm框架, 它是jdbc的轻量级封装.必须编写sql语句, 学习成本低, 比较简单。
应用场景: 互联网公司(互联网金融, 电商, 互联网旅游等等)。

三、mybatis架构:

组件介绍

  • mybatis配置:SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
  • 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
  • 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行
  • mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
  • Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id
  • Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数
  • Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程

转载于:https://www.cnblogs.com/wangchaoyuana/p/7545246.html

mybatis_基础篇相关推荐

  1. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  2. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  3. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  4. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  5. python多线程并发_Python进阶记录之基础篇(二十四)

    回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...

  6. 基础篇9-python基本数据结构-列表

    基础篇9-python基本数据结构-列表 一.列表: 1.有序的集合 2.通过偏移来索引,从而读取数据 3.支持内嵌 a =[[1,2,3],[4,5,6]] 4.可变类型 a[0][1] = 7 二 ...

  7. Linq初级班 Linq To XML体验(基础篇)

    LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...

  8. php 爬虫_Scrapy 爬虫完整案例-基础篇

    1 Scrapy 爬虫完整案例-基础篇 1.1 Scrapy 爬虫案例一 Scrapy 爬虫案例:爬取腾讯网招聘信息 案例步骤: 第一步:创建项目. 在 dos下切换到目录 D:爬虫_scriptsc ...

  9. class括号里的object_Python入门 类class 基础篇

    记住一句话:类是模板,而实例则是根据类创建的对象. 我初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类.(事务可以是具 ...

最新文章

  1. java拖动组件,[小娱乐] 一个能拖动组件、改变组件大小的容器
  2. Rokid webhook 指南 手把手教你做个懒人
  3. VC 2.5 与 ESX 3.0.1 之间存在接口问题
  4. 一文看懂鸿蒙手机操作系统。和安卓、iOS 有何区别?
  5. sharepoint2013保存当前输入的列表
  6. 计算机不读三星硬盘分区,电脑磁盘分区指南!一分钟就学会
  7. 如何从USB运行Windows 8 Developer Preview
  8. python利用thinker制作多页面切换的桌面应用实例教程
  9. Runtime 在IOS中的详细使用
  10. CCNP精粹系列之十三-----OSPF路由汇总
  11. json数组对象和对象数组
  12. mysql存储过程的一个小例子
  13. base——JavaSEJavaEEJavaME的区别【Java中常用的包结构】
  14. Android面试准备20190422
  15. Linux内核编程打印所有线程信息
  16. 初中生python学习_初中生如何学习python
  17. 哪些股票自动交易接口好用呢?
  18. ubuntu中文论坛
  19. OAI SDR LTE 基站部署
  20. 资源分享:17 张程序员专属高清壁纸

热门文章

  1. 2017年伊始,你需要尝试的25个Android第三方库
  2. html应用多个类,html – 如何避免重复多个css类
  3. wordpress mysql 安装_wordpress 搭建安装教程 1 安装数据库、SQLyog
  4. python redis事务_python redis事务源码及应用分析
  5. app制作流程步骤_企业画册设计流程总结 告诉你画册制作步骤
  6. java major version: 51,Unsupported major.minor version 51.0的原因与解决办法
  7. 华为云计算之存储的分类
  8. Linux系统的磁盘管理
  9. mysql清理连接数缓存,MySQL连接池、线程缓存、线程池的区别
  10. php+mysql文件上传,使用PHP将文件上传到MySql DB