mybatis和ibatis使用區別
<?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的欄位要和查詢結果一一對應