MyBatis 初識

摘要:MyBatis 初識


MyBatis 的好處在於可以將SQL語法抽出。

因為SQL語法都寫在XML上所以移植性較佳。

支援 JAVA NET RUBY

一支JAVA 對應一支 XML 

JAVA主要是interface 對應XML中不同的SQL語法宣告。


public interface ExamineeDao {

    /**
     * 查詢考生報名資料
     */
    public ArrayList qryExaminee(ExamineeQryObj qryObj);

}

<select id="qryExaminee" resultMap="BasicMap">
		SELECT
		<include refid="columns" />
		FROM exm_examinee
		WHERE
		exam_seq_no = #{exmSeqNo}
</select>

在xml中有幾個重要屬性,parameterType 、resultType、resultMap

這是指他傳入參數的屬性以及從DB查完後存入的屬性。

如 : 


<resultMap id="BasicExamineeMap"
		type="xxx.xxx.xxx.xxx.ExmExaminee">
		<id property="examSeqNo" column="EXAM_SEQ_NO" />
		<id property="signSeqNo" column="SIGN_SEQ_NO" />
		<result property="grantNo" column="GRANT_NO" />
		<result property="examSubject" column="EXAM_SUBJECT" />
		<result property="mechanicType" column="MECHANIC_TYPE" />
		<result property="idNo" column="ID_NO" />
</resultMap>

resultMap id 對應到SQL中Select玩所對應的物件type

<id> 開頭的為PK(主鍵)或FK(相依鍵)

property 為物件中的屬性

column為DB欄位的名稱

透過此方式將DB欄位資料放入物件屬性中。

回到qryExmExaminee 

其中有一段是<include refid="columns" />

主要是可以將select欄位有效整理


<sql id="columns">
RTRIM(exam_seq_no) exam_seq_no,
sign_seq_no,
RTRIM(grant_no)
grant_no,
RTRIM(exam_subject) exam_subject,
RTRIM(mechanic_type)
mechanic_type
<sql>