mybatis 和 ibatis的区别是啥?

1:二者有什么区别?2:区别大不?
2025-04-24 17:22:51
推荐回答(1个)
回答1:

1.以前用的parameterClass在mybatis中已经永不了了,mybatis里应该使用parameterType。另外resultMap里面也不能继续使用了改成了type
2.dynamic标签不能使用了,下面的配置在mybatis里是错的
[html] view plaincopy



A.FPARENTID = #FPARENTID#


A.LOGINTOPIMAGE like #LOGINTOPIMAGE#


A.FID = #FID#


A.FNAME like #FNAME#


A.LOGINMIDDLEIMAGE like #LOGINMIDDLEIMAGE#


A.VERSIONNUMBER like #VERSIONNUMBER#


A.MAJORTITLE like #MAJORTITLE#


A.LOGINTITLE like #LOGINTITLE#


A.MAJORMIDDLEIMAGE like #MAJORMIDDLEIMAGE#


A.LOGINBOTTOMIMAGE like #LOGINBOTTOMIMAGE#


A.MAJORTOPIMAGE like #MAJORTOPIMAGE#


A.LOGO like #LOGO#


A.ADDRESS like #ADDRESS#


A.FAX like #FAX#


A.PHONE like #PHONE#


A.ZIP like #ZIP#


A.EMAIL like #EMAIL#


A.FID NOT IN ($containIds$)




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 getRecordByList(HealthspecialytypeInfo info);
}

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


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

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