Mybatis:一個基於Java的持久層框架
本文基於Spring對Mybatis整合後的基礎上梳理。
相關資源間的關係
-
Mybatis配置文件(整合後在Spring配置文件裏)
1.Mybatis底層要操作數據庫,所以要在此配置數據源。
2.通過該配置文件,Mybatis要找到對應的映射文件,所以在此要配置映射文件的路徑 -
Mapper映射文件
1.映射文件實際就是接口類的實現,所以要指明這個映射文件所對應的接口類<mapper namespace="dao.EmpDAO">
2.因爲是接口類的實現,所以要指明與接口方法的對應關係和對應的傳入/返回的參數。這裏也就會建立起與實體類的聯繫
3.Mybatis要通過該文件生成SQL,所以要配置執行的SQL。 -
Mapper接口類
一個普通的Java接口類,通過Mapper映射文件裏namespace等的配置,建立與Mybatis的聯繫 -
實體類
一個普通的Java類,通過Mapper映射文件裏傳入/返回參數的配置,建立與Mybatis的聯繫 -
調用Mapper接口類
已經被Spring做了封裝,就像調用普通接口方法一樣,我們從使用框架的角度就不需要多做什麼了。
Mapper映射文件的相關配置
目前可以這麼理解,與Mybatis相關的資源中,Mybatis配置文件是死的,配好就在那,沒什麼變動。接口類和實體類,更多是框架外部的東西,只是框架與這兩個類有聯繫,上節已經闡明瞭聯繫點在哪兒。所以剩下的屬於Mybatis框架內的東西就只有配置Mapper映射文件了。
- EmpMapper.xml
<!-- 簡單的mapper配置文件 --> <mapper namespace="寫對應的java接口文件路徑,包路徑要寫全"> <!-- 增 --> <!-- id:sql語句唯一名 parameterType:傳入的參數類型 --> <insert id="save" parameterType="entity.Emp"> <!-- #{xxx}表示取傳入參數實例的對應屬性xxx的值 --> INSERT INTO emp VALUES(#{id},#{ename},#{age}) </insert> <!-- 刪 --> <delete id="delete" parameterType="int"> DELETE FROM emp WHERE id = #{id} </delete> <!-- 改 --> <update id="modify" parameterType="entity.Emp"> UPDATE emp SET ename = #{ename},age = #{age} WHERE id = #{id} </update> <!-- 查 --> <!-- resultType:返回的查詢結果的類型 --> <select id="findAll" resultType="entity.Emp"> SELECT * FROM emp </select> <!-- 實體類的屬性名與表結構的字段名不一致的情況 --> <!-- resultMap:用來將從數據庫結果集取出的數據映射到相應的實體對象的字段中,映射規則是empMap --> <select id="findById" parameterType="int" resultMap="empMap"> SELECT * FROM emp WHERE id = #{id} </select> <!-- resultMap元素:存放映射規則 --> <!-- type:實體類 property:實體類的屬性名。 column:表結構的字段名。 --> <resultMap type="entity.Emp2" id="empMap"> <result property="empNo" column="id"/> <result property="name" column="ename"/> </resultMap> </mapper>