mybatis和ibatis的区别

这个区别不是很大,最主要的区别就是mybatis简化了编码的过程,不需要去写dao的实现类,直接写一个dao的借口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后再service里面调用dao就可以了,但是ibatis则不可以,必须要写dao的实现类,在写个什么return getSqlMapClientTemplate().queryForList()神马的,所以说mybatis是ibatis的升级版本,也就是在这里,不用写dao的实现类,还有些区别就是xml里面的sql语句的写法有些小变化,比如:

1.以前用的parameterClass在mybatis中已经永不了了,mybatis里应该使用parameterType。另外resultMap里面也不能继续使用了改成了type

2.dynamic标签不能使用了,下面的配置在mybatis里是错的

<sql id="sqlwhere"> 
    <dynamic>
        <isGreaterThan prepend="and" property="FPARENTID" compareValue="-1">
            A.FPARENTID = #FPARENTID#
        </isGreaterThan>
        <isNotEmpty prepend="and" property="LOGINTOPIMAGE">
            A.LOGINTOPIMAGE like #LOGINTOPIMAGE#
        </isNotEmpty>
        <isGreaterThan prepend="and" property="FID" compareValue="-1">
            A.FID = #FID#
        </isGreaterThan>
        <isNotEmpty prepend="and" property="FNAME">
            A.FNAME like #FNAME#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGINMIDDLEIMAGE">
            A.LOGINMIDDLEIMAGE like #LOGINMIDDLEIMAGE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="VERSIONNUMBER">
            A.VERSIONNUMBER like #VERSIONNUMBER#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="MAJORTITLE">
            A.MAJORTITLE like #MAJORTITLE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGINTITLE">
            A.LOGINTITLE like #LOGINTITLE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="MAJORMIDDLEIMAGE">
            A.MAJORMIDDLEIMAGE like #MAJORMIDDLEIMAGE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGINBOTTOMIMAGE">
            A.LOGINBOTTOMIMAGE like #LOGINBOTTOMIMAGE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="MAJORTOPIMAGE">
            A.MAJORTOPIMAGE like #MAJORTOPIMAGE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.LOGO like #LOGO#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.ADDRESS like #ADDRESS#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.FAX like #FAX#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.PHONE like #PHONE#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.ZIP like #ZIP#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="LOGO">
            A.EMAIL like #EMAIL#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="containIds">
            A.FID NOT IN ($containIds$)
        </isNotEmpty>
    </dynamic>
</sql>

3.数据类型的声明和ibatis有了很大的差别,ibatis可以像下面这样写

 insert into M_HEALTHSPECIALYTYPE(FCODE,FCHARGE,FTYPECONTENT,FID,FMARK) 
 values (#FCODE:VARCHAR2#,#FCHARGE:VARCHAR2#,#FTYPECONTENT:VARCHAR2#,#FID#,#FMARK:VARCHAR2#)

在mybatis的话一般是这样弄的

insert into M_HEALTHSPECIALYTYPE(FCODE,FCHARGE,FTYPECONTENT,FID,FMARK) 
     values (#{FCODE,jdbcType=VARCHAR},#{FCHARGE,jdbcType=VARCHAR},#{FTYPECONTENT,jdbcType=VARCHAR},#{FID},#{FMARK,jdbcType=VARCHAR})  

4.mybatis现在已经没有SqlMapClient了,使用的则是SqlSession.在原来的基础上加了像selectMap,selectList,selectOne这样的方法,使用更方便了

5.加了一个叫映射器的新东西,只需要写出接口而不需要实现类就能够操作数据如

import java.util.List;

import org.lxh.vo.HealthspecialytypeInfo;

public interface HealthMapper {
  public List<HealthspecialytypeInfo> getRecordByList(HealthspecialytypeInfo info);
}

在映射文件里要记得namespace写成接口的类全名,sql语句的id写成接口里的方法名就可以了

<select id="getRecordByList" parameterType="org.lxh.vo.HealthspecialytypeInfo" resultMap="resultMap"> 
        select * from M_HEALTHSPECIALYTYPE where FCODE in
        <foreach item="item" index="index" collection="list"
          open="(" separator="," close=")">
          #{item}
        </foreach>
    </select>

调用的时候就像下面

HealthMapper m=ses.getMapper(HealthMapper.class);
List<HealthspecialytypeInfo> record=m.getRecordByList(h);

就这样就可以直接进行数据的操作了,的确智能了很多

5.需要注意的是spring3.0一下的版本并不支持mybatis

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值