mybatis和ibatis区别
1. ibatis3.*版本以后正式改名为mybaits,它也从apache转到了google code下;也就是说ibatis2.*,mybatis3.*。
2. 映射文件的不同
Mybatis实现了接口绑定,使用更加方便。
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,
而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用时不需要通过SqlMapClient去指定namespace 和 sql statement id, 只需要在 sql map config 文件中指定接口的 namespace, 并且sql statement id 和 接口的名字意义对应,然后调用对一个接口即可。
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,
而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用时不需要通过SqlMapClient去指定namespace 和 sql statement id, 只需要在 sql map config 文件中指定接口的 namespace, 并且sql statement id 和 接口的名字意义对应,然后调用对一个接口即可。
ibatis的配置文件如下
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMapConfig
- PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
- <sqlMapConfig>
- <!-- 公共配置 -->
- <settings useStatementNamespaces="true" maxRequests="3000"
- maxSessions="1000" maxTransactions="3000" />
- <!-- 配置文件 begin -->
- <sqlMap resource="com/test/biz/dao/sql/AA_SqlMap.xml" />
- <pre name="code" class="html"> <sqlMap resource="com/test/biz/dao/sql/BB_SqlMap.xml" />
mybatis的配置文件如下
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <settings>
- <!-- changes from the defaults for testing -->
- <setting name="cacheEnabled" value="false" />
- <setting name="useGeneratedKeys" value="true" />
- <setting name="defaultExecutorType" value="REUSE" />
- <!-- 延迟加载 -->
- <setting name="lazyLoadingEnabled" value="true" />
- <setting name="aggressiveLazyLoading" value="false" />
- </settings>
- <mappers>
- <mapper resource="com/test/biz/dao/sql/AAMapper.xml"/>
- </mappers>
- </configuration>
2.5.1 ibatis中根元素是sqlMap,mybatis中是mapper;
2.5.2 在 iBatis 中,namespace 不是必需的,且它的存在没有实际的意义。在 MyBatis 中,namespace 终于派上用场了,它使得映射文件与接口绑定变得非常自然。
2.5.3 ibatis中有resultMap和resultClass两种返回类型,resultMap是我们在ibatis的配置文件中定义的,也就是在配置文件中使用resultMap元素定义的;resultClass是指Java语言中内置的类型,如:integer、java.util.HashMap等等;
mybatis中将两者统一为resultType,这样挺好的,开发者不用再记两个属性了。
2.5.4 ibatis中有parameterClass,mybatis中有parameterType,