對映問題(讓查詢出的結果和實體類對應)
阿新 • • 發佈:2019-01-26
在使用MyBatis寫DAO的實現也就是對應的XML檔案時,當制定resultType為實體時,有兩種方法可以使返回的資料庫中的資料跟實體中每個屬性對應
第一種:在寫SELECT語句的時候,順便寫上查出的資料的列名稱對應的實體屬性。如:
select
student_id as id,
student_name as name,
student_sex as sex
from studnetTable
where studnet_id=#{id}
注意前面是資料庫中列名,後面是專案中自己建的實體的屬性名稱。順便提一下,#{id}表示傳入的引數,傳參可以是以實體為載體,也可以map為載體,也可以為普通資料型別,比如String,int等。
第二種:將查出的資料的列名稱對應的實體屬性單獨定義,形式為<resultMap>...</resultMap>。如:
<resultMap id="ResultMap1" type="model.student">
<id column="student_id" property="id" jdbcType="VARCHAR" />
<result column="studnet_name" property="name" jdbcType="VARCHAR" />
<result column="student_sex" property="sex" jdbcType="VARCHAR" />
</resultMap>
然後在寫SELECT語句時,就可以引用了,例如:
<select id="queryStudnetInfo" resultMap="ResultMap1">
select * from department
where
student_id=#{id,jdbcType=VARCHAR}
</select>
大家應該注意到了,resultMap中引用了定義好的對應關係的結果,這樣就可以成功查詢到了。
順便提一下,id="queryStudnetInfo",這個queryStudnetInfo是在DAO中定義的介面,具體程式碼為:
Studnet queryStudnetInfo(String id);
第一種:在寫SELECT語句的時候,順便寫上查出的資料的列名稱對應的實體屬性。如:
select
student_id as id,
student_name as name,
student_sex as sex
from studnetTable
where studnet_id=#{id}
注意前面是資料庫中列名,後面是專案中自己建的實體的屬性名稱。順便提一下,#{id}表示傳入的引數,傳參可以是以實體為載體,也可以map為載體,也可以為普通資料型別,比如String,int等。
第二種:將查出的資料的列名稱對應的實體屬性單獨定義,形式為<resultMap>...</resultMap>。如:
<resultMap id="ResultMap1" type="model.student">
<id column="student_id" property="id" jdbcType="VARCHAR" />
<result column="studnet_name" property="name" jdbcType="VARCHAR" />
<result column="student_sex" property="sex" jdbcType="VARCHAR" />
</resultMap>
然後在寫SELECT語句時,就可以引用了,例如:
<select id="queryStudnetInfo" resultMap="ResultMap1">
select * from department
where
student_id=#{id,jdbcType=VARCHAR}
</select>
大家應該注意到了,resultMap中引用了定義好的對應關係的結果,這樣就可以成功查詢到了。
順便提一下,id="queryStudnetInfo",這個queryStudnetInfo是在DAO中定義的介面,具體程式碼為:
Studnet queryStudnetInfo(String id);