ibatis源码学习--概述

        ibatis可能大部分学习java的人都或多或少会接触到这个东西,我也不例外,简洁的代码可能也是为数不多的段时间可以学习的开源框架。最早接触jdbc完了之后先接触了hibernate,有人说hibernate简单,当时用的时候因为我级别比较低,所以依靠MyEclipse的插件从数据库表生成DAO层,一切都是那么简单,还以不止一次向人们炫耀我怎么用这个带领一群没写过java的人一周以内就开始了项目开发。的确,如果停留在简单应用上边,很多框架都有他的优越性,我也有很长时间不太愿意舍弃hibernate转投ibatis(当然,我没得选择,公司决定的,哈哈~),每个公司选择都是有他特定的原因的,目前我所在的公司就在使用ibatis而且是2.3.4.726的修订版(至于为什么要修订,稍后我会详细介绍)。我的看法是:一则,公司的数据库采用了分库分表,为了是分表规则尽可能的透明,随意要对原生sql做到最大限度的可控,二则,跟一有联系,同时为了保证sql的高效安全,公司有专门的dba同学,所以你不能指望dba同学去看你优雅的面向对象的java代码,这时候ibatis的有点就有点无与伦比了(这也是我不太喜欢0配置的一部分原因)。

 

如果有同学还是比较烦躁写一堆配置这种手工劳动,其实官方也提供了eclipse插件来简化这种操作,简单实用,不过我还是觉得这么搞的前提是你弄明白了他替你干了什么。

 

好了废话不多说,马上开始,啊哈哈~。

 

首先来点轻松的,在你打算搞ibatis学习的时候你得先搞到一个ibatis的项目,不错你猜到了,官方的宠物商店绝对是首选。目前这个宠物商店在官方的版本有两种:jpetstore-5、jpetstore-6。为什么有两种版本?因为ibatis现在主流的也是两个版本,所以建议同学如果你打算学习ibatis2.x 则checkout出jpetstore-5。

地址如下:http://mybatis.googlecode.com/svn/sub-projects/jpetstore-5/trunk/jpetstore-web

或者你有兴趣建议去官网所提供的google代码库看看:http://code.google.com/p/mybatis/这里有详细的介绍,对了,这篇文章主要针对java版的ibatis2.x代码进行学习,目前不针对.net版。

 

使用了maven(对我来说主要是排错看源代码比较便捷,其他的我的体会是祸福相依),官网很贴心的是提供了maven管理的项目,http://mybatis.googlecode.com/svn/branches/mybatis-2-maintenance/mybatis-2-core,这里提供了ibatis核心的代码,包含common包和sqlmap包,不过首先不会介绍这两个包,因为在此之外还有一个包,可能我们平时也有用,但实在是少之又少,还是弄明白的好,那就是ibatis-dao的包,这个包比较早,基本上从2.2.0之后就再也没有更新了,最近的一次更新也定格在2010-5-17.主要包含在ibatis2.2.x及以下分支的项目中,可能需要大家需把这个搞下来了。

这里提供一个2.2.x版本的项目分支,大家可以下载,或者下载我稍后提供的压缩包:http://mybatis.googlecode.com/svn/tags/java_release_2.2.0-638/mapper/mapper2 

 

好了,啰嗦了一堆,总结一下,ibatis是一个历史悠久的orm(至少我们只用到了这么一点)框架,虽然目前的最新版已经到了3.1.x不过还是有很多大中小公司在使用着2.x的版本,它的优点可以归纳如下:1.简单,易学,易用。2.ibatis封装了JDBC的很多底层调用细节,并能自动将结果集转化为JavaBean对象,大大简化了java数据库层的操作;3.将Sql代码从java代码中分离出来,通过XML文档来管理,大大提高了代码的维护性(尽管这也有问题);4.SQL的分离,也给优化提供了空间,我们公司的dba总会审核我们的SQL,提供优化方案,根据SQL为数据库增加必要的索引等。当然也因人而异,不懂SQL的人就不这么觉得了。ibatis从历史上来说他是由ibatis-dao,ibatis-sqlmap,ibatis-common,三个包组成,通常ibatis-sqlmap与ibatis-common现在融合进了同一个包ibatis-core,同时啰嗦一点,如果你使用了spring作为容器管理ibatis那么你只需要导入ibatis-core,或者单独导入ibatis-sqlmap和ibatis-common包,至于ibatis-dao自从2.2.1开始就不在作为项目一部分打包了,所以平时在spring做容器的情况下就不需要导入这个包了。

 

接下来我们进入实际的操作,首先从ibatis-dao的代码说起,因为这个还是让我多少看到一点当年他的野心,同时酒瓶装新酒,看看也是有些收获的。

 

附必要的链接:

ibatis(现:mybatis)官方地址:http://ibatis.apache.org/

ibatis的java项目官方wiki及管理地址:http://code.google.com/p/mybatis/

ibatis代码官方svn地址:http://mybatis.googlecode.com/svn/trunk/

ibatis优缺点(临时找的,在此感谢作者):http://www.iteye.com/topic/289955

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值