之前我们详细地讨论了MyBatis背后的设计理念以及iBATIS框架是如何产生的。也说明了MyBatis是一个混合型解决方案,它从处理关系数据库的其他不同方法那里借鉴了许多思想。那么MyBatis到底是什么呢?

MyBatis就是我们通常所说的数据映射器。所谓映射器层,是用于在对象和数据库之间搬运数据,同时保证对象、数据库以及映射器本身都相互独立。

0/RM工具将数据库表及其列映射为应用程序中的类及字段。或者说, 0/RM工具在数据库的元数据与类的元数据之间建立起了一种映射关系。

MyBatis与0/RM不同,它不是直接把类映射为数据库表或者说把类的字段映射为数据库列, 而是把SQL语句的参数与结果(也即输入和输出)映射为类。正如你将在本书的后续部分中学到 的,iBATIS在类和数据库表之间建立了一个额外的间接层,这就为如何在类和数据库表之间建立 映射关系带来了更大的灵活性,使得在不用改变数据模型或者对象模型的情况下改变它们的映射 关系成为可能。其实我们这里讨论的这个间接层就是SQL。SQL这个额外的间接层使得iBATIS能够更好地隔离数据库设计和应用程序中使用的对象模型。这就使得它们两者之间的相关性降至最低。图展示了MyBatis如何使用SQL映射数据。

Person

Person

identifier

ID

firstName

FIRST NAME

lastName

直接映射

LAST一NAME

middleName

MIDDLE NAME

hairColor

HAIR COLOR

height

HEIGHT

weight

WEIGHT

Person类

必须和PERSON表相匹配

图对象/关系映射

MyBatis的映射层其实就是SQL。MyBatis让你编写SQL语句。MyBatis负责在类 的特性和数据库表的列之间映射参数和结果。基于这个原因,也考虑到与其他各种 各样的映射方式的区分,为避免混淆,MyBatis团队通常将所谓的“数据映射器”称为SQL映射器。如图2-2所示,iBATIS的映射层其实就是SQL。MyBatis让你编写SQL语句。MyBatis负责在类 的特性和数据库表的列之间映射参数和结果。基于这个原因,也考虑到与其他各种 各样的映射方式的区分,为避免混淆,MyBatis团队通常将所谓的“数据映射器”称为SQL映射器 (SQL mapper)。

系列文章:

MyBatis知多少(1)

MyBatis知多少(2)

MyBatis知多少(3)

MyBatis知多少(4)MyBatis的优势

MyBatis知多少(5)业务对象模型

MyBatis知多少(6)表现层与业务逻辑层

MyBatis知多少(7)持久层

MyBatis知多少(8)关系型数据库

MyBatis知多少(9)不同类型的数据库

MyBatis知多少(10)应用程序数据库

MyBatis知多少(11)企业数据库

MyBatis知多少(12)私有数据库

MyBatis知多少(13)MyBatis如何解决数据库的常见问题

MyBatis知多少(14)分散的数据库系统

MyBatis知多少(15)数据模型

MyBatis知多少(16)MyBatis映射的更多相关文章

  1. MyBatis知多少(23)MyBatis结果映射

    resultMap的元素是在MyBatis的最重要和最强大的元素.您可以通过使用MyBatis的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情. ResultMap ...

  2. MyBatis知多少(26)MyBatis和Hibernate区别

    iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域.我个人建议使用MyBatis的,如果: 你想创建自己的SQL,并愿意维持他们. 你的环境是由关系数据模型驱 ...

  3. MyBatis知多少(26)调试

    这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日 ...

  4. MyBatis知多少(25)动态SQL

    使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...

  5. MyBatis知多少(24)存储过程

    使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLO ...

  6. MyBatis知多少(22)MyBatis删除操作

    本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, f ...

  7. MyBatis知多少(21)更新操作

    上一章展示了如何使用MyBatis对表进行读取操作.本章将告诉你如何在一个表中使用MyBatis更新记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( ...

  8. MyBatis知多少(20)MyBatis读取操作

    上篇展示了如何使用MyBatis执行创建操作表.本章将告诉你如何使用MyBatis来读取表. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT ...

  9. MyBatis知多少(19)MyBatis操作

    若要使用iBATIS执行的任何CRUD(创建,写入,更新和删除)操作,需要创建一个的POJO(普通Java对象)类对应的表.本课程介绍的对象,将“模式”的数据库表中的行. POJO类必须实现所有执行所 ...

随机推荐

  1. Jquery对Cookie的操作

    第一步:先引用jQuery的插件jquery-1.9.1.min.js 第二步:引用jquery.cookie.js插件 下对cookie的操作: $.cookie("cookieName& ...

  2. MyEclipse使用总结——MyEclipse文件查找技巧 ctrl+shift+R ctrl+H

    一.查找文件 使用快捷键[ctrl+shift+R]弹出弹出文件查找框,如下图所示: 二.查找包含某个字符串的文件 使用快捷键[ctrl+H]在弹出对话框中选File Search选项,然后在第一个文 ...

  3. Leetcode-283 Move Zeroes

    #283.   Move Zeroes Given an array nums, write a function to move all 0's to the end of it while mai ...

  4. Oracle数据库恢复

    建用户 wf2014 赋权限 grant dba to wf2014; 数据恢复 imp wf2014/wf2014 file=D:\wf2014.dmp full=y 参数设置: datasourc ...

  5. android: 播放音频

    在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单.下表列出了 MediaPlay ...

  6. [苏飞开发助手V1.0测试版]官方教程与升级报告

           [苏飞开发助手V1.0测试版]官方教程与升级报告导读部分----------------------------------------------------------------- ...

  7. ssh sftp scp命令

    scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:r ...

  8. js遍历jsonTree

    var json = [{tcName:"11", children:[{tcName:"22", children:[{tcName:"33&quo ...

  9. Java int to String互转

    Integer.toString Integer.parseInt(lAyaNums);

  10. Scala 深入浅出实战经典 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...