iBatis与Mybatis的区别对比

た 入场券 2022-05-27 00:16 288阅读 0赞

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里是.

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

发表评论

表情:
评论列表 (有 0 条评论,288人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hibernateibatis区别

    项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也只是知道几点关于这两个框架的区别, 今天闲着没事干, 从网上找了几篇文章, 做了一个简单

    相关 Hibernate和IBatis对比

    项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也只是知道几点关于这两个框架的区别, 今天闲着没事干, 从网上找了几篇文章, 做了一个简单