Mybatis与iBatis的主要区别对比
Mybatis与iBatis的主要差异对比
他们都是优秀的持久层框架,MyBatis是现在最常用的持久层框架,可以动态地拼接sql语句,非常人性化,更适合逻辑复杂的sql;iBatis就是MyBatis前身,他们有很多相似的地方,今天主要讲一下sqlMap里面的变化。
1. 传入参数
iBatis是parameterClass,而MyBatis是可以不写的,也可以用parameterType;parameterClass,而MyBatis是可以不写的,也可以用parameterType;
iBatis的传出参数关键字是:resultClass,而MyBatis是resultMap。
iBatis: <select id="selectDeviceByWhere" parameterClass="Map" resultClass="BaseResultMap"> </select>
MyBatis:<select id="selectDeviceByWhere" parameterType="Map" resultMap="BaseResultMap"> </select>
2. 接收参数
IBatis是使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于MyBatis;#̲ #=#{ }, = =={ } ,解释一下#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的区别,#̲字符串处理,加单引号,可以一定…直接使用,当传入的是数字时,用#会进行隐式转换为字符串,耗性能。IBatis是使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于MyBatis;#̲ #=#{ }, = =={ } ,解释一下#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的区别,#̲字符串处理,加单引号,可以一定…直接使用,当传入的是数字时,用#会进行隐式转换为字符串,耗性能。
3. 判断语句,这个也是非常常用和重要的地方。
对于MyBatis的很简单,只要在where 或者if 的标签里面添加test=""就可以了,里面写判断条件了。但是IBatis的就麻烦了许多了,它将每个都方法都进行了封装。例如
isNull:判断property字段是否是null
<isNull prepend="and" property="id"> </isNull>
isEqual相当于equals,判断状态值。
<isEqual property="state" compareValue="0"> </isEqual>` 或
<isEqual property="state" compareProperty="nextState"> </isEqual>
isEmpty判断参数是否为Null或者空,满足其中一个条件则其true。
isNotEmpty相反,当参数既不为Null也不为空是其为true。
4. 循环的使用
iBatis是使用Iterate:这属性遍历整个集合,并为 java.util.List 集合中的元素重复元素体的内容。例如
<isNotEmpty property="deptIds">
and dept_id in
<iterate property="deptIds" open="(" close=")" conjunction=",">
#deptIds[]#
</iterate>
</isNotEmpty>
deptIds是数组类型的属性值,当deptIds不为null或“”时,进行deptIds遍历取值。
MyBatis使用的是ForEach方法。他可以遍历List,,Map三种元素。
循环插入:
<insert id="xxxx" parameterType="CompilingRateDto">
insert into cm_compiling_rate (area)
values
<foreach collection="compilingRateList" item="compilingRate" separator="," >
(#{compilingRate.area})
</foreach>
</insert>
循环更新:
<update id="xxxxx" parameterType="CompilingRateDto">
<foreach collection="updateCompilingRateList" item="compiling" separator=";" >
update cm_compiling_rate cr
set compiling_manpower = #{compiling.compilingManpower},
where cr.valid_Month=#{compiling.validMonth}
</foreach>
</update>
5. MyBatis中一条sql结束后可以有“;”,而iBatis会报错
6. 存储过程的调用
iBatis:
<procedure id="setCaseQueueStatus.sql" parameterMap="params.caseQueueStatus">
<![CDATA[
{call CMPCCDATA.PKG_CMPCC_QUEUE_TEASE.PROC_SET_AST_ACCT_STATUS(?,?)}
]]>
</procedure>
<parameterMap id="params.caseQueueStatus" class="java.util.Map">
<parameter property="P_ACCT_SN" jdbcType="VARCHAR" javaType="string" mode="IN" />
<parameter property="P_QUEUE_STATUS" jdbcType="VARCHAR" javaType="string" mode="IN" />
</parameterMap>
MyBatis :
<select id="xxxxx" resultType = "java.lang.String" statementType="CALLABLE">
{call batch_randomMark()}
</select>
通过 statementType 属性将该语句标识为存储过程而非普通 SQL 语句
————————————————
版权声明:本文为CSDN博主「Rudolf__」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rudolf__/article/details/83578615
Mybatis与iBatis的主要区别对比相关推荐
- mybatis、ibatis 和spring集成
mybatis是ibatis的升级版,spring也有自带mybatis的orm.所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3. ...
- MyBatis插入大量数据效率对比:foreach、SqlSession、sql三种方式批量插入
用mybatis插入数据执行效率对比,对比三种方式(测试数据库为MySQL), 使用 SqlSessionFactory,每一批数据执行一次提交 使用mybatis-plus框架的insert方法,f ...
- Mybatis与Hibernate的详细对比
转载自 Mybatis与Hibernate的详细对比 前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate ...
- php能不能用MyBatis,Mybatis与Ibatis的区别
Mybatis与Ibatis的区别: 1.Mybatis实现了接口绑定,使用更加方便 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口 ...
- Mybatis与Ibatis比较(转载)
原文地址:Mybatis与Ibatis比较(转载)作者:JavaLeader 随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时 ...
- mybatis和ibatis的区别
从iBatis到MyBatis,不只是名称上的变化,MyBatis提供了更为强大的功能 使用它们开发的准备工作 添加相对应的jar包依赖 创建全局配置文件---config.xml 创建sql映射文件 ...
- Mybatis 和 IBatis 的区别
1. Mybatis 比 IBatis 比较大的几个改进是什么? 1)有接口绑定,包括注解绑定 sql 和 xml 绑定 Sql 2)动态 sql 由原来的节点配置变成 OGNL 表达式 3) 在一对 ...
- mybatis和ibatis的一点区别
1. dao.xml命名空间的区别 mybatis:<mapper namespace="com.jd.yys.treaty.dao.read.TreatyInfoRDao" ...
- 【持久化框架】Mybatis与Hibernate的详细对比
前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...
最新文章
- iframe中的奇怪现象
- boost::geometry::azimuth用法的测试程序
- Frame和Iframe横向滚动条的解决方案
- php 时间函数参考
- Java中Math3 各种随机数生成器的使用(Random Generator)
- js控制input只能输入数字和小数点后两位,输入其他自动清除方法。
- 自动化测试元素定位“最佳实践”
- 线性代数及其应用笔记
- macOS Monterey 12.0 Beta版 With Clover 5136 and OC 0.7.0 and PE 三EFI分区原版黑苹果镜像
- mach3加工回差_mach3 中文说明书.pdf
- Go语言实战抽奖系统
- 微信公众平台开发者模式和编辑模式有什么用
- JAVA 中文乱码 idea设置
- python数据解析-re、xpath选择器的使用
- CCS软件的C语言取模注意点
- 1501_FTA失效树分析简介
- [笔试编程-手撕代码]给定一个只包含大写英文字母的字符串s,求对s重新排列的所有不同的排列数,包含该输入的字符串本身
- 安卓手机卡顿怎么解决_苹果七系统内存满了手机卡顿解决方法
- 腾讯海外计费系统架构演进
- 运动品牌推荐:2022年最值得入手的一些运动装备