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)的更多相关文章

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

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

  2. MyBatis知多少(26)调试

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

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

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

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

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

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

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

  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类必须实现所有执行所 ...

  10. MyBatis知多少(18)MyBatis系统

    小型.简单系统 小型应用程序通常只涉及单个数据库,只有一些相当简单的用户界面和领域模型.它的业务逻辑非常简单,甚至对一些简单的CRUD (Create, Read, Update, Delete:增删 ...

随机推荐

  1. atitit.动态加载数据库配置in orm hibernate mybatis

    atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...

  2. Singleton模式和Mono-State模式

    类和实例 对于大多数的类,都可以创建多个实例.在需要和不需要时,创建和删除这些实例.该过程会伴随着内存的分配和归还. 同时,有一些类,应该仅有一个实例.该实例在程序启动/结束时被创建和删除. root ...

  3. c#中的事件

    之前的博客讲到委托,委托本质上是将方法作为方法的参数传给方法.实际开发中,实现某个功能的的代码通常会封装成一个类,本例中字符串处理封装成MyStringProc类, 代码如下: namespace D ...

  4. [原创]Java静态代码检查工具介绍

    [原创]Java静态代码检查工具介绍 一  什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...

  5. android: SQLite使用 SQL 操作数据库

    虽然 Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些 人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库.这种人 一般都是属于 SQL ...

  6. When cloning on with git bash on Windows, getting Fatal: UriFormatException encountered

    I am using git bash $ git --version git version .windows. on Windows 7. When I clone a repo, I see: ...

  7. ASP.NET Web API中的参数绑定总结

    ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...

  8. ASP 中 Cookies 的 Expires 属性的设置(JS版本)

    直接上代码,代码中有注释 <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <% var numVisi ...

  9. Java httpclient请求,解决乱码问题

    public class HttpPostRequestUtil { public HttpPostRequestUtil() { } public static String post(String ...

  10. WHY翻写NEHE与红龙的3D图形程序 [开源]

    个人认为学习3D图形程序开发,有两套经典教程.D3D的<D3D游戏开发编程基础>也就是红龙那本书.OpenGL的NEHE教程.为向经典致敬,将我之前翻写他们的程序开源. 我所做的工作是将其 ...