<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="userInfoMapper">
<select id="selectUser" parameterClass="int" resultClass="mybatis.demo.UserInfo">
select * from UserInfo where userid =#userid#
</select>
</sqlMap>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mybatis.demo.UserInfoMapper">
<select id="selectUser" parameterType="int" resultType="mybatis.demo.UserInfo">
select * from UserInfo where userid =#{userid}
</select>
</mapper>
public interface UserInfoMapper {
public UserInfo getUserInfo(int userid);
}
1. 和全局配置文件一样,由于 DTD 约束发生变化,根元素也由原来的 <sqlMap> 调整为 <mapper>。
2. <select> 等元素的 parameterClass 属性改为了 parameterType 属性。
<select> 等元素的 resultClasss 属性改为了 resultType 属性。
<parameterMap> 等元素的 class 属性改为了 type 属性。
<result> 元素的 columnIndex 属性被移除了。
3. 嵌套参数由 #value# 改为了 #{value}。
4. <parameter> 等元素的 jdbcType 属性取值中,原来的 "ORACLECURSOR" 取值改为了现在的 "CURSOR","NUMBER" 取值改为了 "NUMERIC"。
5. 在 iBatis 中,namespace 不是必需的,且它的存在没有实际的意义;在 MyBatis 中,namespace 终于派上用场了,它使得映射文件与接口绑定变得非常自然。
6. 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,即:通过namespace实现*Mapper.java和*Mapper.xml的绑定。
7. 在In查询中,
Ibatis使用标签<iterate>,而mybatis使用标签<foreach>
8.Ibatis中,做查询时resultMap的字段要和查询结果一一对应