iBatis与Mybatis的区别对比

iBatis与Mybatis的区别对比iBatis 就是 myBatis 前身 他们只有有很多地方很相似 但是在 sqlMap 里面已经有很多地方变动了 下面就让我看好好地学习一下吧 同时对比一下他们的不同点 但是这两种框架为什么这么多人使用呢 因为他方便使用啊 它最大的特性就是动态 SQL 语句 可以随意的拼接 sql 语句啊 简直不要太人性化 事先声明 这篇文章现在只谈使用方法 不谈配置过程 首先是 sql 例如 lt sqlid sql de

iBatis就是myBatis前身,他们只有有很多地方很相似,但是在sqlMap里面已经有很多地方变动了。下面就让我看好好地学习一下吧,同时对比一下他们的不同点。

但是这两种框架为什么这么多人使用呢?因为他方便使用啊,它最大的特性就是动态SQL语句,可以随意的拼接sql语句啊,简直不要太人性化。

事先声明,这篇文章现在只谈使用方法,不谈配置过程。

首先是sql。例如:


  

    delete  



  
这个就相当定义了一个sql语句的片段,然后就可以方便的复用了啊,免得每次都要写重复的代码,麻烦,冗余。
有了定义,那么就一定要有调用了啊。

  
这个就是调用的,可以方便的把他放到你的增删改查语句的任意位置。完美。
同理,myBatis也是这样的。

然后就是增删改查了,这个两个也是一致的。都是使用的insert delete update select标签。但是iBatis可以使用 statement,它是通用的。
但是里面关键字用到的就不一样了,比如:
iBatis的传入参数关键字是:parameterClass,而MyBatis是可以不写的,也可以用parameterType;
iBatis的传出参数关键字是:resultClass,而MyBatis是resultMap。
iBatis:   
MyBatis:

接下来是接受参数:IBatis是使用#  #和$   $来接受参数的。使用方法等同于MyBatis;# #=#{  },$ $=${  }.

然后就是判断语句了,这个也是非常常用和重要的地方。
对于MyBatis的很简单,只要在where 或者if  的标签里面添加test=””就可以了,里面写判断条件了。
但是IBatis的就麻烦了许多了,它将每个都方法都进行了封装。
例如:
isNull:判断property字段是否是null        


   

至于prepend就是代表着添加在动态语句前面。
property就是被比较的属性。

isNull:判断property字段是否不是null 

isEqual相当于equals,判断状态值。


 




 

isEmpty判断参数是否为Null或者空,满足其中一个条件则其true。
isNotEmpty相反,当参数既不为Null也不为空是其为true。

这些就是非常常用的条件元素的属性了。

下面再来看看循环的:
Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。

Iterate 的属性: 
prepend      - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选) 
property      - 类型为 java.util.List 的用于遍历的元素(必选) 
open            - 整个遍历内容体开始的字符串,用于定义括号(可选) 
close            - 整个遍历内容体结束的字符串,用于定义括号(可选) 
conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选) 



遍历类型为 java.util.List的元素。

例子:


  

    username=#userNameList[]#  



  

MyBatis使用的是ForEach方法。他可以遍历List,[](array),Map三种元素。

foreach属性:
item           -  循环体中的具体对象(必选) 
collection   -  要做foreach的对象(必选) 
open          -  整个遍历内容体开始的字符串,用于定义括号(可选) 
close          -  整个遍历内容体结束的字符串,用于定义括号(可选) 
separator   -  元素之间的分隔符(可选)
index          -  在list和数组中,index是元素的序号,在map中,index是元素的key(可选)
例子:



      #{item.id}



最后的还有一个非常重要的标签没有介绍。dynamic
dynamic有一个非常重要的作用,那就是去除它的代码块中的第一个prepend里面的字符。
然后他也有自己的prepend标签,作用也是在语句前面添加修饰符,比如where。

而在MyBatis里是
.

好了,总结完毕,总结也是学习的自我梳理的一部分,所以如果那里不多,请各位大佬评论,我会尽快改正。





















































































版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201859.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:27
下一篇 2026年3月20日 上午8:27


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号