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的主要区别对比相关推荐

  1. mybatis、ibatis 和spring集成

    mybatis是ibatis的升级版,spring也有自带mybatis的orm.所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3. ...

  2. MyBatis插入大量数据效率对比:foreach、SqlSession、sql三种方式批量插入

    用mybatis插入数据执行效率对比,对比三种方式(测试数据库为MySQL), 使用 SqlSessionFactory,每一批数据执行一次提交 使用mybatis-plus框架的insert方法,f ...

  3. Mybatis与Hibernate的详细对比

    转载自  Mybatis与Hibernate的详细对比 前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate ...

  4. php能不能用MyBatis,Mybatis与Ibatis的区别

    Mybatis与Ibatis的区别: 1.Mybatis实现了接口绑定,使用更加方便 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口 ...

  5. Mybatis与Ibatis比较(转载)

    原文地址:Mybatis与Ibatis比较(转载)作者:JavaLeader 随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis  虽然从正式版发布至今也有近一年时 ...

  6. mybatis和ibatis的区别

    从iBatis到MyBatis,不只是名称上的变化,MyBatis提供了更为强大的功能 使用它们开发的准备工作 添加相对应的jar包依赖 创建全局配置文件---config.xml 创建sql映射文件 ...

  7. Mybatis 和 IBatis 的区别

    1. Mybatis 比 IBatis 比较大的几个改进是什么? 1)有接口绑定,包括注解绑定 sql 和 xml 绑定 Sql 2)动态 sql 由原来的节点配置变成 OGNL 表达式 3) 在一对 ...

  8. mybatis和ibatis的一点区别

    1. dao.xml命名空间的区别 mybatis:<mapper namespace="com.jd.yys.treaty.dao.read.TreatyInfoRDao" ...

  9. 【持久化框架】Mybatis与Hibernate的详细对比

    前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Mybatis简 ...

最新文章

  1. iframe中的奇怪现象
  2. boost::geometry::azimuth用法的测试程序
  3. Frame和Iframe横向滚动条的解决方案
  4. php 时间函数参考
  5. Java中Math3 各种随机数生成器的使用(Random Generator)
  6. js控制input只能输入数字和小数点后两位,输入其他自动清除方法。
  7. 自动化测试元素定位“最佳实践”
  8. 线性代数及其应用笔记
  9. macOS Monterey 12.0 Beta版 With Clover 5136 and OC 0.7.0 and PE 三EFI分区原版黑苹果镜像
  10. mach3加工回差_mach3 中文说明书.pdf
  11. Go语言实战抽奖系统
  12. 微信公众平台开发者模式和编辑模式有什么用
  13. JAVA 中文乱码 idea设置
  14. python数据解析-re、xpath选择器的使用
  15. CCS软件的C语言取模注意点
  16. 1501_FTA失效树分析简介
  17. [笔试编程-手撕代码]给定一个只包含大写英文字母的字符串s,求对s重新排列的所有不同的排列数,包含该输入的字符串本身
  18. 安卓手机卡顿怎么解决_苹果七系统内存满了手机卡顿解决方法
  19. 腾讯海外计费系统架构演进
  20. 运动品牌推荐:2022年最值得入手的一些运动装备

热门文章

  1. python填充_python 实现矩阵填充0的例子
  2. ofdma技术_SC-FDMA技术
  3. 分治法:归并排序求逆序对
  4. maven 打包失败 提示找不到jar的问题
  5. 终于明白上一篇的一顿误操作是什么了,是$,不是S !!!!!
  6. Cookie文件内容的含义
  7. 【BZOJ4668】冷战 并查集
  8. jquery 性能优化与实践
  9. juc原子类之五:AtomicLongFieldUpdater原子类
  10. python制作桌面小程序_微信小程序在线制作:快速生成一个餐饮小程序