MyBatis知多少(1)
SQL (Structured Query Language,结构化查询语言)己经存在很长一段时间了。自从第一次提出“数据可以被规范化为一组相互关联的表”这样的思想以来,已经超过35年了。 从那时起,IT公司就投入了几十亿美元来开发RDBMS (relational database management system, 关系数据库管理系统)。很少有哪一种软件技术敢声称自己像关系数据库和SQL那样经受住了时间的考验。确实,经过了那么长时间,关系技术背后仍然有巨大的推动力,并且它是世界上最大 的软件公司的基础性成果。所有的迹象都表明SQL仍然会继续使用下去,至少30年。

MyBatis的建立正是基于这样的思想:关系数据库和SQL仍然很有价值,在整个产业范围内对 SQL投资仍然是一个非常好的主意。我们可能都曾有过这样的经历,应用程序的源代码(即使经历了很多版本)随着时间的流逝最终还是过时了,但它的数据库甚至是SQL本身却仍然很有价值。 在某些情况下我们也会看到一个应用程序已经被用其他的语句重写了,但背后的SQL和数据库却 基本上保持不变。
正是基于这些原因,Mybatis并不试图去隐藏SQL或者避免使用SQL。相反,正是Mybatis这个 持久层框架广泛使用了SQL,它使得SQL更容易使用、更容易集成到现代的面向对象软件中。最 近,有传言说数据库和SQL与我们的面向对象的设计理念不符,但事实并不一定是这样。Mybatis能帮助我们避免这种问题。后面,我们将学习到Mybatis的历史和基本原理,并讨论影响其创建的动力。
在现实世界中,混合型解决方案随处可见。将两个看上去似乎相悖的思想在“中间处”巧妙 结合,被证明是一种有效的方法,它往往能恰到好处地解决问题,在某些情况下甚至会导致新兴行业的诞生。汽车工业就是一个最典型的例子,运输工具大部分的设计革新都来自于对不同 思想的混合。将小轿车与大篷货车结合最终就形成了我们现在的家用房车。把卡车与越野车相结合,于是就有了现代城市人身 份的象征——运动型多功能车。将高速汽车与旅行汽车相 结合,于是就有了驾驶起来很舒服的家用小轿车。在汽油引擎旁边安装一个电力引擎,于是目前很多环境污挚问题就都可以迎刃而解了。
混合型解决方案在IT领域同样被证明是非常有效的。MyBatis就是这样一个混合型的持久层解决方案。在过去的时间中,大量的方法来使应用程序能够执行SQL,以便操纵其背后的数据库。MyBatis汲取了这些方法中的优秀思想,成为一个独特的持久层解决方案。
MyBatis知多少(1)的更多相关文章
- 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知多少(23)MyBatis结果映射
resultMap的元素是在MyBatis的最重要和最强大的元素.您可以通过使用MyBatis的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情. ResultMap ...
- 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类必须实现所有执行所 ...
- MyBatis知多少(18)MyBatis系统
小型.简单系统 小型应用程序通常只涉及单个数据库,只有一些相当简单的用户界面和领域模型.它的业务逻辑非常简单,甚至对一些简单的CRUD (Create, Read, Update, Delete:增删 ...
随机推荐
- android eclipse关联源码,以及源码(代码)以及jar查看软件
1.eclipse关联源码 步骤一:自已百度下载相应版本的源码,我这里是4.2也就是API=17的版本. 步骤二:找到你安装sdk的目录, G:\Program Files\adt-bundle-wi ...
- 结构体快排回顾(sort)
一般来说,我做竞赛的时候排序一般用快排 很快很方便 普通sort(从小到大) sort(a,a+n); 直接贴一段代码吧,包含了vector,sort,结构体等简单东西综合 #include < ...
- android: 多线程编程基础
9.1 服务是什么 服务(Service)是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那 些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使 ...
- HOWTO: InstallScript MSI工程取Log
InstallShield的各种类型安装包如果遇到安装问题(尤其是在客户安装时遇到问题),获取Log分析是最有效的方法之一. 对于封装一个Setup.exe的InstallScript MSI工程,我 ...
- ASSIC码对照表
编码对应字符: ✔:\u2714✘:\u2718 <script type="text/javascript"> var aaa = "\u2718" ...
- 为什么你还在用嵌入式的方式来使用mod_wsgi?
可能你还不知道你的python 网站是否跑在embedded mod of mod_wsgi,不管你知不知道请看下去,因为大部分人都是在这个工作模式下运行的.嵌入式顾名思义就是运行在apache的子 ...
- 最新版ffmpeg源码分析
最新版ffmpeg源码分析一:框架 (ffmpeg v0.9) 框架 最新版的ffmpeg中发现了一个新的东西:avconv,而且ffmpeg.c与avconv.c一个模样,一研究才发现是libav下 ...
- THEOS makefile
转自https://www.h4ck.org.cn/2013/07/theos-makefile/ theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是 ...
- 机器学习基石--学习笔记01--linear hard SVM
背景 支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳.所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器.最近,台大林轩田老师在Coursera上的机 ...
- Gradle中ProGuard的配置
好久没有写博客了…元旦前赶紧写一篇吧… 这些日子琢磨了一下gradle.对比起maven确实在配置上灵活很多,对groovy的支持可以更容易的自定义任务. 由于最近的几个项目中都使用到了moco这个开 ...