MyBatis知多少(16)MyBatis映射
之前我们详细地讨论了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知多少(16)MyBatis映射的更多相关文章
- MyBatis知多少(23)MyBatis结果映射
resultMap的元素是在MyBatis的最重要和最强大的元素.您可以通过使用MyBatis的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情. ResultMap ...
- MyBatis知多少(26)MyBatis和Hibernate区别
iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域.我个人建议使用MyBatis的,如果: 你想创建自己的SQL,并愿意维持他们. 你的环境是由关系数据模型驱 ...
- MyBatis知多少(26)调试
这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日 ...
- MyBatis知多少(25)动态SQL
使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...
- MyBatis知多少(24)存储过程
使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLO ...
- MyBatis知多少(22)MyBatis删除操作
本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, f ...
- MyBatis知多少(21)更新操作
上一章展示了如何使用MyBatis对表进行读取操作.本章将告诉你如何在一个表中使用MyBatis更新记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( ...
- MyBatis知多少(20)MyBatis读取操作
上篇展示了如何使用MyBatis执行创建操作表.本章将告诉你如何使用MyBatis来读取表. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT ...
- MyBatis知多少(19)MyBatis操作
若要使用iBATIS执行的任何CRUD(创建,写入,更新和删除)操作,需要创建一个的POJO(普通Java对象)类对应的表.本课程介绍的对象,将“模式”的数据库表中的行. POJO类必须实现所有执行所 ...
随机推荐
- Leetcode 190 Reverse Bits 位运算
反转二进制 class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ans = ; ; i<; ++i,n &g ...
- SQLSERVER新建表的时候页面分配情况是怎样的?
SQLSERVER新建表的时候页面分配情况是怎样的? 再次感谢sqlskill网站和转载sqlskill网站文章并翻译的人,因为您们的转载和翻译让小弟又学习到新的东西o(∩_∩)o 文章中用到的工具: ...
- webRTC-实时流媒体的福音
WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术.[1] WebRTC实现了基于网页的视频会议 ...
- Jmeter属性和变量
一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ...
- Scala 具体的并行集合库【翻译】
原文地址 本文内容 并行数组(Parallel Array) 并行向量(Parallel Vector) 并行范围(Parallel Range) 并行哈希表(Parallel Hash Tables ...
- 转:TinyXM--优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- 聊聊CSS postproccessors
阿里妈妈 @一丝 准备发布其CSSGrace,即CSS后处理插件,于是顺便聊聊CSS postprocessors. 从Rework说起 Rework是TJ大神开发的CSS预处理框架.但为什么会出 ...
- eclipse android logcat 只显示自己应用程序信息的设置方法
1 elcipse 中往往会在logcat中显示 all message ,而这里面的信息太多,根本没有办法进行区分.如图: 2 我们想显示自己项目的 logcat .下面开始设置. 3 首先点击上面 ...
- iOS中生成并导入基于Swift编程语言的Framework
从iOS 8.0开始就引入了framework打包方式以及Swift编程语言.我们可以主要利用Swift编程语言将自己的代码打包成framework.不过当前Xcode 7.x在自动导入framewo ...
- 在Window下安装Oracle 12C Cloud Control Agent
① 准备好安装源,这个ORACLE普通账号无法下载到,有需要的可以联系我 p14570373_112000_Generic.zip,用于Windows 64位操作系统 ② 解压p14570373_ ...