iBATIS教程 (一)简单概念的介绍

1、什么是iBATIS?

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架。(什么叫持久?后面会介绍)

【友情提示】读“爱巴蒂斯”

2、为什么要学iBATIS?

            2.1数据价值大于软件本身

            最近大数据很火,数据的价值越来越本人重视,很多公司的数据价值远远大于软件本身,例如银行、金融机构、阿里的交易信息等。在这种情   况下持久层的构建就显得非常重要,即如何更高效的调用管理SQL语句,保证数据的持久性。

【Tip】什么叫持久层?

            既然叫持久层,那肯定是相对于瞬时层来说的。数据储存一般就两种,一种放在内存中,断电那就没了,还有一种是写进硬盘的,可以                         持久保持数据,那么就叫做持久层。持久层非常耗费资源,所以怎么设计持久层就是一件非常具有经济效益的事情,这也是iBATIS的价                         值所在,像银行这种,很多数据都要写进硬盘的。

            2.2容易上手,方便使用

            之所以容易上手,是因为两点,一是,外部化SQL,二是,封装化SQL。所谓外部化SQL是说SQL嵌套到程序中的时候单独的分层开来写SQL,专门有个区域文件就是用来写SQL的,与程序本身的文件分离开来,这样方便查阅和管理。封装化SQL指的是利用XML文件封装SQL语句,完成上述的分层,XML文件本身就十分简单明了。所以iBATIS又叫做半自动化语言。

【Tip】什么叫半自动化?

             hibernate可以自动生成SQL语句,但iBATIS不行,所以叫半自动。但半自动凸显了SQL语句的独立性,可以单独操作。方便使用。

             2.3大公司很多都在用

             比如阿里,为了方便员工调用查看SQL语句,阿里采用了iBATIS框架

3、iBATIS发展史

             很多人不明白为什么学啥东西时都要学历史。打个比方,记忆candidate这个单词,初学者是不是觉得很麻烦?这个词叫候选人。但是大家记得candle这个词,蜡烛,candid是坦白的意思,再到candidate候选人。cand最早是结晶的意思,进而引申出白色,圣洁的意思,后来罗马元老院的议员么总是穿着象征圣洁的白色袍衣,进而用candidate表示议员。通过一个词的演变历史,你就可以快速的掌握到发明这个词的过程和原因,从而掌握到这个词的本质,帮助你去理解和记忆。所以学习很多知识都要去了解他的演化和历史过程。才能帮助你去理解当初人们在什么情况下发明iBATIS,又是如何改进的。

            iBATIS出现的本质就是SQL语句的应用,说白了,人们使用web,client需要和数据的库的数据进行交互,人们输入自己的信息,信息经过计算录入计算机,又返回给用户。这个过程是个越来越复杂的过程,SQL语言是帮助大家在数据库中进行筛选数据,提取数据,但数据始终要进入其他的程序进行交互,SQL中数据是普通数据,而JAVA等程序中,只存在对象和类的关系,所以SQL的数据需要进行转换。这时候iBATIS的作用就体现出来,说白了就方便大家构建一个数据库到其他程序的一个桥梁。其核心也就是处理SQL。说的官方教科书一点就是,iBATIS是一个优秀的持久层的解决方案。


              3.1、SQL

              SQL结构化查询语言(Structured Query Language),SQL一般常用两种类型语言,(1)数据定义语言(DDL):其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。(2)数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERTUPDATEDELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

              但如今的数据库越来越复杂,不能指望用户能直接使用数据库获得自己想要的数据。所以iBATIS完全支持SQL。这是他的优点之一。

              3.2、存储过程

              老的存储过程的思想是两层设计(two-tier),即界面调用,后台储存。后来业务复杂后改成三层设计(three-tier)到N层设计(N-tier)。把很多功能和业务进一步细分,方便大家去管理和修改,在不同的区域管理不同的功能,这点思想也被iBATIS所继承。

              3.3、内联式SQL

              早起的一种把SQL语言嵌入JAVA等语言的方法,本质上是一种SQL的预编译状态,并不实用,所以很快就被淘汰了。所以人们想寻求一种新的方法,即在JAVA中用某种结构完全替代SQL语言,然后在数据库中翻译成SQL状态再去使用,这才是完全意义上融入JAVA,方便编译,同时又能被数据库所接受。

             3.4、动态SQL

             动态SQL可以避免使用预编译器来解决内联SQL的一些问题。

【TIP】什么叫动态SQL?

             想明白动态SQL就应该知道还有静态SQL,所谓静态SQL,就是所需要的SQL语句是已知的,比如select * from User表,这些语句是已知的,              那么就叫做静态,但是如果我想查一个变量名比如User名叫张三的人,而张三目前不知道,需要在程序中用户从前台输入张三这个人名,再传              到后台的变量中,数据库才能开始查询,这就叫动态SQL,说白了有变量。这样就更灵活了。SQL语言本身就有存储过程中执行的动态                        SQL,但JAVA中也有这种动态SQL,而且由于JAVA本身的逻辑处理能力,强化了这种功能,使得处理复杂过程更加得心应手。

            3.5、O/RM(对象/映射)

            这个工具是帮助生成SQL语句的。          

4、iBATIS所处的位置


            这个流程大家大概知道就好,看完我第二篇的例子再返回来看这个框架就会立马明白。

            另外讲一下DAO层,很多书都会提到这个,但是解释又不清楚很多初学者会遗忘。

           所谓DAO模式,DAO层,就是持久层中的抽象层,DAO(Data Access Object) 是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。说白了就是提供与数据库连接的一个层。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值