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: permission和uses-permission
首先,先看一下permission定义的格式: <permission android:description="string resource" android:icon= ...
- 多功能表单填报系统V1.2.1-适用于在线报名系统、调查、数据收集等
多功能表单系统V1.2.1 前台:http://www.schoolms.net/mysoft/biaodan/index.asp 后台:http://www.schoolms.net/myso ...
- Python多线程编程之多线程加锁
Python语言本身是支持多线程的,不像PHP语言. 下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止. #co ...
- 管理windows防火墙
1.导出防火墙规则 netsh advfirewall export "c:\advfirewall.wfw" 2.禁用防火墙 netsh firewall set opmode ...
- Scala 并行和并发编程-Futures 和 Promises【翻译】
官网地址 本文内容 简介 Futures 阻塞 异常 Promises 工具 最近看了<七周七语言:理解多种编程泛型>,介绍了七种语言(四种编程范型)的主要特性:基本语法,集合,并行/并发 ...
- Ubuntu 汉化及kate汉化和使用自带终端的解决方式
汉化方法:1,打开屏幕上方的“system”(系统),里面有个“Administration”(系统管理),选择“Snaptic Package Manager”(软件包管理器),打开,输入密码后进入 ...
- Oracle 12c
Common User vs. Local User – 12c Edition http://dbasolved.com/2013/06/29/common-user-vs-local-user-1 ...
- [译] Angular 2 VS. React: 血色将至
Angular 2 VS. React: 血色将至 原文链接:https://medium.com/@housecor/angular-2-versus-react-there-will-be-blo ...
- elasticsearch-cn-out-of-box
elasticsearch-cn-out-of-box https://github.com/hangxin1940/elasticsearch-cn-out-of-box 为elasticsearc ...
- Mac 安装终端软件
1.安装或者重新安装lua环境 下载 lua 地址: http://www.lua.org/versions.html 1.进入 lua 目录 2.make macosx 3.sudo make in ...