1. 程式人生 > >mybatis和ibatis使用區別

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的欄位要和查詢結果一一對應