mybatis 和 ibatis的区别是啥?

1:二者有什么区别?2:区别大不?... 1:二者有什么区别?
2:区别大不?
展开
 我来答
pieryon
推荐于2017-09-23 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166870
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
1.以前用的parameterClass在mybatis中已经永不了了,mybatis里应该使用parameterType。另外resultMap里面也不能继续使用了改成了type
2.dynamic标签不能使用了,下面的配置在mybatis里是错的
[html] view plaincopy
<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可以像下面这样写
[html] view plaincopy
insert into M_HEALTHSPECIALYTYPE(FCODE,FCHARGE,FTYPECONTENT,FID,FMARK)
values (#FCODE:VARCHAR2#,#FCHARGE:VARCHAR2#,#FTYPECONTENT:VARCHAR2#,#FID#,#FMARK:VARCHAR2#)

在mybatis的话一般是这样弄的
[html] view plaincopy
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.加了一个叫映射器的新东西,只需要写出接口而不需要实现类就能够操作数据如
[html] view plaincopy
import java.util.List;

import org.lxh.vo.HealthspecialytypeInfo;

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

在映射文件里要记得namespace写成接口的类全名,sql语句的id写成接口里的方法名就可以了
[html] view plaincopy
<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>

调用的时候就像下面
[java] view plaincopy
HealthMapper m=ses.getMapper(HealthMapper.class);
List<HealthspecialytypeInfo> record=m.getRecordByList(h);

就这样就可以直接进行数据的操作了,的确智能了很多
陈万斌_chen
2012-05-14
知道答主
回答量:50
采纳率:0%
帮助的人:16.9万
展开全部
mybatis和ibatis都是持久层ORM这一层,mybatis是ibatis的升级版本
1、配置文件的区别,ibatis需要DAO的实现层,而Mybatis可以省略掉这一层,在DAO层直接根据ID去掉用就OK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式