在数据层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>