2019独角兽企业重金招聘Python工程师标准>>>

MyBatis 提供了一种“半自动化”的 ORM 实现,是一种 "SQL Mapping" 框架。MyBatis 并不完全是一种 ORM 框架,它的设计思想和 ORM 相似,只是它允许直接编写 SQL 语句,使得数据库访问更加灵活。

1、ORM

ORM(Object/Relational Mapping),即对象关系映射,它完成面向对象的编程语言到关系数据库的映射。ORM 工具的唯一作用是:把持久化对象的保存、修改、删除等操作,转换成对数据库的操作。

ORM 基本映射关系:

  • 数据表映射类
  • 数据表的行映射对象(实例)
  • 数据表的列(字段)映射对象的属性

2、MyBatis结构

2.1、功能架构

Mybatis的功能架构分为三层:

  • API接口层:提供给外部使用的接口 API,开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

  • 数据处理层:负责具体的 SQL 查找、SQL 解析、SQL 执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

  • 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件,为上层的数据处理层提供最基础的支撑。

2.2、框架架构

  • 加载配置:MyBatis 应用程序根据XML配置文件加载运行环境,创建 SqlSessionFactory,SqlSessionFactory,配置来源于两个地方,一处是配置文件,一处是 Java 代码的注解,将 SQL 的配置信息加载成为一个个 MappedStatement 对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

  • SQL 解析:当 API 接口层接收到调用请求时,会接收到传入 SQL 的 ID 和传入对象(可以是 Map、JavaBean 或者基本数据类型),Mybatis 会根据 SQL 的 ID 找到对应的 MappedStatement,然后根据传入参数对象对 MappedStatement 进行解析,解析后可以得到最终要执行的 SQL 语句和参数。

  • SQL 执行SqlSession 将最终得到的 SQL 和参数拿到数据库进行执行,得到操作数据库的结果。

  • 结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成 HashMap、JavaBean 或者基本数据类型,并将最终结果返回,用完之后关闭 SqlSession。

2.2.1、SqlSessionFactory和SqlSession

SqlSessionFactory 是创建 SqlSession 的工厂,SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

SqlSession 是执行持久化操作的对象,它完全包含了面向数据库执行 SQL 命令所需的所有方法,可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。在使用完 SqlSession 后我们应该使用 finally 块来确保关闭它

转载于:https://my.oschina.net/pierrecai/blog/1512660

MyBatis入门(一) -- 简介相关推荐

  1. MyBatis入门(二)---一对一,一对多

    一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybati ...

  2. MyBatis由浅入深学习总结之一:MyBatis入门案例

    一.MyBatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

  3. MyBatis从入门到精通(1):MyBatis入门

    作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...

  4. Mybatis学习笔记——Mybatis入门

    文章目录 Mybatis入门 1.为什么要使用mybatis? 2.ORM 3.mybatis简介 4.mybatis框架 5.mybatis入门程序 5.1搭建环境 5.2 配置log4j 5.3 ...

  5. 【MyBatis系统拓荒笔记 - 1】MyBatis入门之混沌初开

    MyBatis系统拓荒系列文章: [MyBatis系统拓荒笔记 - 1]MyBatis入门之混沌初开 视频学习教程:Mybatis教程IDEA版-4天-2018黑马SSM-01 目录 MyBatis简 ...

  6. Mybatis入门(一)-- 柚子真好吃

    Mybatis入门(一)-- 柚子真好吃 一.Mybatis简介 二.Mybatis环境搭建 三.Mybatis前期的准备工作 四.Mybatis工作原理 五.Mybatis基础实现 前言:本人刚刚入 ...

  7. Mybatis入门之动态sql

    Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...

  8. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    为什么80%的码农都做不了架构师?>>>    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...

  9. TypeScript基础入门 - 函数 - 简介

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/ ...

  10. GBDT(MART) 迭代决策树入门教程 | 简介 .

     GBDT(MART) 迭代决策树入门教程 | 简介 2013-12-23 16:26 2802人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 数据挖掘相关(13) 作者同类文章X GB ...

最新文章

  1. 笑出腹肌的注释,都是被代码耽误的诗人!
  2. Netty:option和childOption参数设置说明
  3. java构建词性词袋_词袋模型
  4. 使用OpenVAS 9进行漏洞扫描
  5. 原理图连线有错误提醒_拔罐方法不对=缩短生命,中医提醒,拔火罐警惕三个禁忌...
  6. 图像处理和计算机视觉中的经典论文(部分)
  7. Python与常见加密方式
  8. 学习 MySQL 高性能优化原理,这一篇就够了!
  9. Servlet其他关联类---ServletConfig类
  10. 干货 | 大牛谈嵌入式C语言的高级用法
  11. Structure from Motion 资料总结
  12. Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02)
  13. jsp页面什么时候用 .do 和 .jsp
  14. 计算机应用基础试题及答案东师,计算机应用基础试题及答案东师
  15. 2020 - 2021个人年度总结
  16. 基于STM32的AD9854模块调试总结
  17. 分享一些实用的生活软件
  18. 证件照的尺寸规格和像素要求
  19. 版本发布 | IvorySQL Release - 2.2
  20. OpenAI的创立和发展历程

热门文章

  1. ubuntu下pip的安装、升级和使用
  2. PAT B1034 有理数四则运算 (20 分)
  3. 转到Servlet出现500型错误
  4. 在CentOS上搭建PHP服务器环境(可用)
  5. BZOJ3343 教主的魔法 二分法+分块
  6. Httputils请求网络数据
  7. csdn的blog后台程序的导航菜单的实现
  8. 发际线预警!10本程序员必读烧脑经典,你敢挑战一本吗?
  9. 手机APP的秘密,看的一清二楚!
  10. 这8种保证线程安全的技术你都知道吗?