- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Mybatis与Ibatis的区别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Mybatis与Ibatis的区别: 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,不过一对一映射为什么也不允许就不太明白了。可能是因为一对一是一对多的特例,而在设计框架的时候并没有考虑去处理或是难于处理这一特例吧.
3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素 熟悉struts2的人应该对OGNL表达式不会感到陌生, MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁.
可能较为关心的是 Mybatis实现了接口绑定,使用更加方便。 iBatis / MyBatis 3提供了一个新的功能:注解.
最后此篇关于Mybatis与Ibatis的区别的文章就讲到这里了,如果你想了解更多关于Mybatis与Ibatis的区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有谁知道当省略了flushInterval时iBATIS cacheModel的行为是什么,比如说缓存类型是MEMORY?我希望它只是将缓存结果无限期地保留在内存中。我有一组结果,如果不重新启动服务器
我需要一个解决方案来取消长时间运行的选择语句。我正在使用 Spring 3.0.2、iBatis 2.3.0 和 Oracle 10g。我设法让它与普通 JDBC 一起工作,但是因为选择是通过高级搜索
我有两个表的数据库 post: id post_name post_desc files: file_id file_name pos
Spring4.2.0不支持ibatis。我的项目正在从 Spring 3.2.4 升级到 Spring 4.2。当我用谷歌搜索时,我发现 spring4.2 与 mybatis 的集成示例,但没有与
根据用户指南,我可以使用文件路径而不是资源: // Using classpath relative resources // Using url fully qualified pat
我有一个 iBatis 查询,例如 但是像 lowerLimit、upperLimit、maxLowerLimit、maxUpperLimit 和 state 这样的字段可能为 null,
我写了一个查询:- select userid,endpointarns from t_user_actives where sid=#{sid} and (userid i
我在 weblogic 10.3.6 中使用 spring 3.2.0 和 ibatis 2.3.4在 weblogic 中部署时。 我收到此 NoSuchMethodError 如下: User d
假设我有一个查询 getUser有两个参数 - 用户名和密码。我想要一个像这样的映射器方法: public UserBean getUser(String userName, String passw
我在生产应用程序中使用的是iBatis-2.3.4.726。我想迁移生产应用程序以使用MyBatis。 在迁移过程中我需要考虑哪些要点? 是否有任何配置更改,或者MyBatis支持iBatis配置作为
我试图将startSequenceId,stopSequenceId和orderNumber传递到SQL映射中,但是,我不想使用类型化的对象,即parameterType="com.abc.Order
要删除的字符串ID为 复制代码代码如下: string SDSALES_IDString = 1,2,3,4,5,6,7 //转成Array Array a
我目前正在使用 ibatis 返回一些 pojo,一切都很好。 我的问题是: 我必须从表中返回 1 行,就像 3 个字段一样,我不想为它创建一个 pojo。我只想运行查询并获取 3 个值。有没有简单的
我在 iBatis 中有几个嵌套的 ResultMaps,它们具有完全相同的数据库列名。这会导致歧义,并导致为不同的数据库表检索到不正确的结果。 例如,`
现有代码库的 Java 升级和 Wildfly 升级已完成。在具有 Wildfly 服务器的 Windows 上,应用程序已正确部署。在具有 Wildfly 服务器的 Unix 上,应用程序部署失败,
我在 MyBatis v3 映射器 xml 中动态生成 where 子句。不过加括号确实很麻烦。有没有更简单的方法来处理这个问题而不使用 if 语句?
我现在的处境很复杂。我需要向 iBATIS select 传递三个参数,其中 2 个是 String ,1 个是 List 。 列表看起来像: List userList=new List(); pu
我有一个 select 语句,它返回相同数据类型 (VARCHAR) 的值列表。结果介于 1 到 6 行之间。我使用 queryForList() 并将响应存储在 List 对象中。执行时出现错误 -
谁能告诉我这是怎么回事?我有两个程序和两个映射。一个工作正常,另一个失败。这个工作正常:
在我的项目中,我们使用springmvc、spring和ibatis框架,问题是:在我的 dao 代码中是: @Override public Integer insertAdzoneEnvInfoB
我是一名优秀的程序员,十分优秀!