下面要给大家介绍的就是ibatis和mybatis的区别,那么对于这两者的区别你都了解吗?下面就让我们一起来看看究竟有哪些区别吧!
一、区别
1、判断语句
MyBatis非常的简单,在if的标签里面或者是where添加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。
2、传入参数
iBatis:parameterClass
MyBatis可以不写,也可以使用parameterType;parameterClass
传出参数关键字
iBatis:resultClass
MyBatis:resultMap
iBatis:
<select id="selectDeviceByWhere" parameterClass="Map" resultClass="BaseResultMap"></select>
MyBatis:
<select id="selectDeviceByWhere" parameterType="Map" resultMap="BaseResultMap"></select>
3、循环的使用
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>
4、接收参数
IBatis
使用# #和$ KaTeX parse error: Expected 'EOF', got '#' at position 23: …使用方法等同于MyBatis;#̲ #=#{ }, = =={ }
#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的区别
#̲字符串处理,加单引号,可以一定…直接使用,在传入的是数字的时候,用#会进行隐式转换为字符串,耗性能。
5、存储过程的调用
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语句
6、MyBatis中一条sql结束后可以有“;”,而iBatis会报错。
以上就是ibatis和mybatis的区别了,你都了解了吗?
你想了解更多关于java架构师的内容吗?请继续关注奇Q工具网来了解吧!
推荐阅读: