Mybatis和Ibatis区别

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

2.dynamic标签不能使用了。

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);

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

6.ibatis中根元素是sqlMap,mybatis中是mapper;

7.在 iBatis 中,namespace 不是必需的,且它的存在没有实际的意义。在 MyBatis 中,namespace 终于派上用场了,它使得映射文件与接口绑定变得非常自然。

8.dtd约束文件不同

DTD(Document Type Definition,文档类型定义),主要是用来约束XML文件的一种方式。它是标准通用标记语言和可扩展标记语言1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。DTD也可用做保证标准通用标记语言、可扩展标记语言文档格式的合法性,可通过比较文档和DTD文件来检查文档是否符合规范,元素和标签使用是否正确。文件实例提供应用程序一个数据交换的格式。使用各类DTD是为了让标准通用标记语言、可扩展标记语言文件能符合规定的数据交换标准,因为这样,不同的公司只需定义好标准DTD,就能依DTD建立文档实例,并且进行验证,如此就可以轻易交换数据,防止了实例数据定义不同等原因造成的数据交换障碍,满足了网络共享和数据交互。DTD文件是一个美国信息交换标准代码文本文件。