ibatis转成Mybatis问题小结

本文详细对比了ibatis与mybatis在架构、参数传递关键词及复杂查询处理上的区别。ibatis采用Service->Dao结构,而mybatis则为Service->Mapper结构,并在XML配置中使用不同的参数类型标识。文章还深入解析了两者在处理map参数、空值判断及in语句语法上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在数据层ibatis转换成mybatis的时候,遇到了点问题。

区别1:

ibatis的结构是Service->ServiceImpl->Dao->DaoImpl->Domain(实体类)->xml(里面是对应的SQL)

mybatis的结构是Service->Mapper->Mapper.xml文件,其中Mapper文件需要在applicationContext.xml中注册bean,可以给后续调用提供方便。

区别2:

ibatis的xml中的参数传递关键词是:parameterClass(传入的参数) resultClass(返回值)

mybatis的xml中的参数传递关键词是:parameterType(传入的参数)resultType(返回值)

区别3:

传入的参数时map,且map中有String,entity,entity中有List

判断为空的语法,引用参数的语法,还有in的语法都不同

 map.put("fc", fc);->fc是一个实体,有String字段,还有List

 map.put("start", lr.getStart());

 map.put("end", lr.getStart() + lr.getLimit());

ibatis:
<select id="QUERY_FLTK_ROUGH_BY_CONDITION"
             parameterClass="java.util.HashMap"
             resultClass="net.chinanets.flyy.domain.Fltk">
             <isNotEmpty property="fc.jzrq">
                    <![CDATA[
                                                                   AND flqwjbxx.bbrq < #fc.jzrq#
                    ]]>
             </isNotEmpty>
             <isNotEmpty property="fc.flflId">
                    <![CDATA[
                                       AND REGEXP_LIKE (flfl.qlj, (SELECT qlj || '($$|>>)'
                                                                     FROM flfl
                                                                    WHERE ID = #fc.flflId#))
                    ]]>
             </isNotEmpty>
             <isNotEmpty property="fc.fgkmcs">
                    <![CDATA[
                             AND flfl.gflfl IN
                    ]]>
                    <iterate open="(" close=")" conjunction=","
                          property="fc.fgkmcs">
                          <![CDATA[
                                          #fc.fgkmcs[]#
                          ]]>
                    </iterate>
             </isNotEmpty>
       </select>
mybatis:
<select id="queryFltkPreciseByCondition"
             parameterType="java.util.HashMap"
             resultType="Fltk">
             <if test="fc.flflId != null">
                    <![CDATA[
                                       AND REGEXP_LIKE (flfl.qlj, (SELECT qlj || '($$|>>)'
                                                                     FROM flfl
                                                                    WHERE ID = #{fc.flflId}))
                    ]]>
             </if>
             <if test="fc.fgkmcs!= null">
                    <![CDATA[
                             AND flfl.gflfl IN
                    ]]>
                    <foreach collection="fc.fgkmcs" index="index" item="item" open="(" separator="," close=")">
                          #{item}
                    </foreach>
             </if>
             <if test="fc.tkbs">
                    <![CDATA[
                                                 AND fltk.tkbs LIKE '%'||#{fc.tkbs}||'%'
                    ]]>
             </if>
       </select>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值