文档章节

MyBatis入门(一) -- 简介

兴趣使然的程序员
 兴趣使然的程序员
发布于 2017/08/18 11:52
字数 793
阅读 11
收藏 1

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://www.shiyanlou.com/courses/802/labs/2798/document

共有 人打赏支持
兴趣使然的程序员
粉丝 21
博文 112
码字总数 87412
作品 0
深圳
程序员
Mybatis 轻松入门教程

Mybatis框架 的快速入门 MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集...

yxhusmart
2016/11/04
11
0
深入浅出MyBatis_Index

深入浅出MyBatis系列 【深入浅出MyBatis系列一】MyBatis入门 【深入浅出MyBatis系列二】配置简介(MyBatis源码篇) 【深入浅出MyBatis系列三】Mapper映射文件配置 【深入浅出MyBatis系列四】...

陶邦仁
2015/12/22
932
0
MyBatis:快速入门实例 HelloWorld

一、简介 MyBatis是一个轻量级的持久层框架,它可以帮我们省去繁杂的JDBC操作,包括获取数据库连接、设置参数、处理结果集、事务管理等等。通过XML配置或注解,即可实现简单的完成原本复杂的...

kolbe
2015/09/18
3.1K
0
Mybaits深入了解(一)----带你入门

Mybatis简介 Mybatis架构 Mybatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对iba...

令仔很忙
2016/07/01
0
0
MyBatis入门

一 简介 mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。 mybatis可以将向preparedStatement中输入参数...

Bbigbug
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

简介 大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模...

hblt-j
40分钟前
3
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 9.1 正则介绍_grep上 什么是正则 ...

zgxlinux
55分钟前
2
0
想用Unity3D引擎软件赚点钱的看过来

前言: 你可以不拥有很多钱 但你一定要有赚钱的能力 目前手上有项目, 需要熟练Unity3D引擎软件的伙伴 有意向的给我发私信

猿神出窍
57分钟前
2
0
Spring Boot全局异常处理

Spring Boot默认的异常处理机制 默认情况下,Spring Boot为两种情况提供了不同的响应方式。 一种是浏览器客户端请求一个不存在的页面或服务端处理发生异常时,一般情况下浏览器默认发送的请求...

狼王黄师傅
今天
8
0
Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
今天
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部