`
田智伟
  • 浏览: 206807 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

 

 

 

分享到:
评论

相关推荐

    ibatis-2-mybatis-2.3.5.zip

    一、iBatis概述 iBatis,由Clinton Begin创建,最初命名为SQL Map,是一款轻量级的Java ORM(对象关系映射)框架。它将SQL语句与Java代码分离,提供了一种灵活的方式来控制数据库操作,避免了传统的JDBC中的大量...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,...

    iBATIS-SqlMaps-中文教程

    11. **源码分析**:对于进阶读者,可以进一步研究iBATIS的源码,了解其实现原理,有助于更深入地理解框架。 12. **工具支持**:介绍一些辅助开发的工具,如MyBatis Generator,它可以自动生成iBATIS相关的Java代码...

    ibatis-2 源代码

    下载的iBatis源码通过SVN获取,意味着可以查看其版本历史,了解每个版本的修改细节。 通过深入研究iBatis-2的源代码,我们可以理解其设计思想,学习如何构建高效的数据访问层,同时也能为现代ORM框架如MyBatis的...

    ibatis-sqlMap相关参考

    8. **源码分析**:深入Ibatis源码,理解其执行流程和优化技巧。 9. **工具支持**:了解IDE中对Ibatis的支持,如插件安装和配置,以及如何利用它们提高开发效率。 通过以上知识点的学习,开发者能更好地掌握Ibatis-...

    ibatis-2.3.4.726-src-源代码

    《深入解析iBatis 2.3.4.726源码》 iBatis,作为一款轻量级的Java持久层框架,以其灵活、高效的特点,在许多项目中得到了广泛应用。本文将针对iBatis 2.3.4.726版本的源代码进行详尽解读,帮助开发者深入了解其内部...

    ibatis学习资料汇总

    深入研究iBatis源码有助于理解其内部工作原理,包括如何解析XML配置文件,如何执行SQL语句,以及如何进行结果映射。源码分析可以帮助开发者更好地定制和优化自己的应用。 六、iBatis实践项目 通过实践项目,可以...

    ibatis源代码项目

    一、iBatis框架概述 iBatis是由Clinton Begin创建的一个开源项目,最初是Apache基金会的子项目,后来转为MyBatis。它的主要功能包括:动态SQL、映射文件解析、事务管理等。通过XML或注解方式配置SQL语句,实现了SQL...

    MyBatis(iBATIS) 学习

    《MyBatis(iBATIS) 学习指南》 MyBatis,原名iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML...

    API ibatis2

    **API ibatis2** iBATIS 是一个Java编程语言中的持久层框架,它允许开发者将SQL语句直接集成到...这份文档详细介绍了iBATIS的各个方面,包括配置、映射文件的编写、事务管理等,是学习和使用iBATIS 2的重要参考资料。

    ibatis 第一个程序

    1. **iBatis 概述**:首先,我们需要了解 iBatis 是什么,它的主要功能,以及它如何在 MVC 架构中与其他组件(如 Service 和 Controller)交互。 2. **环境配置**:设置 iBatis 需要的环境,包括 Maven 或 Gradle ...

    ibatis 学习笔记

    一、Ibatis 概述 Ibatis 是由 Apache 软件基金会维护的开源项目,其设计目标是简化 SQL 与 Java 代码的绑定,避免手动操作 JDBC。Ibatis 提供了一个 SQL 映射框架,通过 XML 或注解的方式,将 SQL 语句与 Java 代码...

    ibatis

    PPT教程通常会概述iBATIS的核心概念,步骤和最佳实践,而示例代码则能帮助学习者通过实践来理解iBATIS的工作原理。 在iBATIS的学习中,关键知识点包括: 1. **配置**:理解SqlMapConfig.xml文件,包括数据源设置、...

    iBatis学习总结

    一、iBatis概述 iBatis是由Apache基金会维护的一个轻量级框架,它的主要目标是解决Java应用与数据库之间的数据交互问题。它避免了传统的JDBC代码繁琐的编写,将SQL与Java代码分离,使开发更专注于业务逻辑。iBatis...

    iBATIS&Spring合奏(一)--DAO

    10. **总结与展望**:总结整合iBATIS和Spring的优势,以及可能遇到的问题,为读者提供进一步学习和实践的建议。 虽然压缩包文件名“spritis”没有提供具体信息,但根据上下文,可能包含了示例代码、配置文件或其他...

    ibatis 的关系映射

    文件名如 "iBatis2学习笔记:多对多映射(双向).htm" 暗示了文档可能深入讲解了如何配置和使用双向多对多映射,而 "iBatis2学习笔记:SqlMap的配置总结(18条).htm" 可能提供了关于 iBatis 配置的全面概述。...

    一个iBatis的demo

    通过学习这个 iBatis 的 demo,开发者可以更好地理解和掌握 iBatis 在实际开发中的运用,提升数据访问层的构建能力。同时,对于阅读源码的部分,有助于深入理解框架内部的工作机制,为今后的二次开发或问题排查提供...

    mule进阶之ibatis component

    6. **源码解析**:深入到Mule iBatis组件的源码,了解其内部工作原理,这有助于优化性能和调试问题。 7. **工具支持**:利用Mule的监控工具(如Anypoint Studio的调试器和Anypoint Platform的管理控制台)来测试和...

    ibatis 工具与讲座

    - iBATIS技术教程PPT和代码:提供的压缩包可能包含详细的PPT讲解和示例代码,是学习和理解iBATIS的实用资料。 通过深入学习和实践,开发者可以充分利用iBATIS的优势,实现高效、灵活的数据库操作,提升项目开发效率...

    ibatis在web工程中的应用笔记

    3. 学习曲线:MyBatis的学习曲线相对较平缓,因为它不需要深入理解ORM概念,而Hibernate则需要掌握更多概念。 4. 开发效率:Hibernate提供了自动的CRUD操作,简化了开发流程,但在某些特定场景下,MyBatis可能需要更...

Global site tag (gtag.js) - Google Analytics