`

ibatis和Mybatis比较

 
阅读更多
随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis
虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了中文版的使用手册,不过相信很多人还在项目中使用ibatis2.x版本。
究竟Mybatis有哪些新特性,能给我们带来哪些好处呢?以下是我看一位大侠研究后


1、Mybatis实现了接口绑定,使用更加方便。
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,
而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
这可以说是Mybatis最重要的改进。


注意:
虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置,
不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在


2、对象关系映射的改进,效率更高
相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。
不过这种方式存在“N+1查询问题”。
概括地讲,N+1查询问题可以是这样引起的:
? 你执行了一个单独的SQL语句来获取结果列表(就是+1)。
? 对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是N)。
这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。

而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。
具体实现方法请自行参考Mybatis官方使用手册,不在此累述.

不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler里34行),而实际项目中需要分页的情况又特别多……
仔细一想,一对多映射确实不能通过配置文件来分页,因为这时查询出的记录数并不等于实际返回对象的size,不过一对一映[size=medium][size=xx-large][size=small]
[/size][/size]射为什么也不允许就不太明白了。可能是因为一对一是一对多的特例,而在设计框架的时候并没有考虑去处理或是难于处理这一特例吧。
[/size]
3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。
熟悉struts2的人应该对OGNL表达式不会感到陌生,
MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。




可能较为关心的是

Mybatis实现了接口绑定,使用更加方便。

iBatis / MyBatis 3提供了一个新的功能:的注解。

http://jc-dreaming.iteye.com/admin/blogs/1003781
分享到:
评论

相关推荐

    ibatis2mybatis-master.zip

    iBATIS和MyBatis都是Java开发中常用的持久层框架,它们帮助开发者简化数据库操作。iBATIS是早期的版本,而MyBatis是其后续发展并更加完善的版本。 iBATIS的主要特点是它允许开发者将SQL语句直接写在XML配置文件中,...

    Ibatis/mybatis代码生成工具

    为了进一步提高开发效率,开发者们设计了一系列的代码生成工具,如"Ibatis Helper"和"generator"等,它们能够自动生成基于Ibatis或Mybatis的CRUD(Create, Read, Update, Delete)代码,从而减少手动编写SQL和实体类...

    从iBatis迁移到MyBatis

    iBatis是一个Java语言中的SQL映射框架,而MyBatis是在iBatis的基础上发展起来的,提供了更多的功能和优化。 在数据库开发中,持久层框架是至关重要的,它负责处理数据库的CRUD(创建、读取、更新、删除)操作,以及...

    ibatis和mybatis对比

    ibatis和mybatis对比

    Ibatis和Mybatis实例源码

    Ibatis和Mybatis是两个著名的Java持久层框架,它们在数据库操作中提供了高效、灵活的解决方案。本文将深入探讨这两个框架的源码,帮助开发者理解其内部机制,提升Java编程能力。 首先,Ibatis是一个基于Java的SQL...

    ibatis2.X升级mybatis3.X之曲径通幽处

    Ibatis和Mybatis都是广泛使用的Java ORM(对象关系映射)框架,它们帮助开发者将数据库操作与业务逻辑解耦。本篇文章将探讨从ibatis2.x升级到mybatis3.x的过程,揭示其中的技术变迁和核心变化。 Ibatis2.x是一款轻...

    ibatis和mybatis的区别

    在里面总结了ibatis和mybatis的主要区别,包括xml文件等

    ibatis2mybatis-master

    可以帮你将 ibatis 2.x sqlmap 文件转换为 myBatis 3.x mapper 文件,该工具是使用了 Ant 构建任务进行 XSTL 转换和一些语法文字替换 该工具下载下来使用非常简单,把你要转换的所有 sqlmap 文件放到 source 文件夹...

    iBatis和MyBatis对比

    在Java EE开发领域,iBatis和MyBatis是两个广受欢迎的持久层框架,它们都提供了SQL映射的功能,帮助开发者处理数据库操作。iBatis作为早期的代表,以其简洁和灵活性赢得了开发者们的青睐,特别是对于熟悉SQL的程序员...

    ibatis mybatis 分页 crud 完整代码

    在IT行业中,数据库操作是应用程序开发的核心部分,而Ibatis和Mybatis作为Java领域的两个流行持久层框架,为开发者提供了方便的数据访问接口。本资源"ibatis mybatis 分页 crud 完整代码"包含了这两个框架在CRUD...

    springMvc_ibatis_mybatis

    Spring MVC、iBatis 和 MyBatis 是Java开发中常用的三个框架,它们分别在Web层、数据访问层有着重要作用。让我们深入探讨这三个框架的核心概念、使用场景以及它们之间的关系。 **Spring MVC** Spring MVC是Spring...

    iBatis+MyBatis[中文教程]

    iBatis和MyBatis是两个非常流行的Java持久层框架,它们在数据库操作中提供了强大的支持,极大地简化了数据访问层(DAO)的实现。这篇教程将深入介绍这两个框架的核心概念、功能以及如何进行实际应用。 首先,iBatis...

    ibatis mybatis crud 完整代码

    在IT行业中,`iBatis` 和 `MyBatis` 是两种非常流行的持久层框架,它们主要用于简化Java应用程序中的数据库操作。本篇文章将深入探讨这两个框架,并基于`CRUD`(Create, Read, Update, Delete)操作来阐述如何使用它们...

    2011最新ibatis+Mybatis+Spring整合文档全集以及案例

    这篇文章将深入探讨ibatis、Mybatis和Spring框架的整合,以及它们在实际开发中的应用。 首先,让我们了解一下这三个核心组件: 1. **iBatis**:这是一个SQL映射框架,它允许开发者将数据库操作与应用程序逻辑分离...

    ibatis和mybatis的前世今生.txt

    #### 三、ibatis与JDBC的比较 - **JDBC**:Java数据库连接标准,提供了基本的数据库访问接口,但在实际使用中需要开发者自行处理很多细节。 - **ibatis**:建立在JDBC之上的轻量级框架,通过提供一系列工具和服务,...

    myBatis和ibatis的区别

    通过对ibatis与myBatis之间区别的详细分析,我们可以看到myBatis不仅继承了ibatis的优点,还在很多方面进行了改进和优化,使得其在功能性和易用性上都有了显著提升。对于开发者而言,选择myBatis作为持久层框架可以...

    ibatis、mybatis官方教程文档集合(含Manning.iBATIS.in.Action)

    Manning.iBATIS.in.Action.Jan.2007.eBook-BBL.pdf MyBatis 3 User Guide Simplified Chinese.pdf MyBatis-3.0.3-Migrations.pdf MyBatis-3.0.3-User-Guide.pdf MyBatis-3-Migrations.doc MyBatis-3-Migrations.pdf ...

    mybatis_spring_struts2_tjz.zip_ibatis_mybatis_spring_spring stru

    Struts2、Spring和iBATIS(MyBatis)是Java Web开发中常见的三大框架,它们各自负责不同的职责,组合起来可以构建出高效且可维护的Web应用。本项目"mybatis_spring_struts2_tjz.zip"提供了一个集成这三大框架的小型...

    mybatis和ibatis代码生成工具

    MyBatis和iBatis是两个著名的Java持久层框架,它们都致力于简化数据库与Java代码之间的交互。在Java开发中,代码生成工具可以极大地提高开发效率,减少手动编写重复的CRUD(创建、读取、更新、删除)操作。本压缩包...

    mybatislink eclipse 根据接口自动跳转到xml,支持早期ibatis、mybatis

    标题 "mybatislink eclipse 根据接口自动跳转到xml,支持早期ibatis、mybatis" 描述了一款针对MyBatis和早期iBatis框架的Eclipse插件——MybatisLink。这款插件旨在提升开发效率,允许开发者在编写Java接口时,通过...

Global site tag (gtag.js) - Google Analytics