iBatis与Mybatis的区别对比

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是使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值