天天看點

SSM架構-MyBatis進階篇(一)

一、MaBatis

本篇目的介紹一下在開發過程中使用mabtis,如何自己去操作資料庫以及如何将表之間的關系建立聯系.當在Mapper的接口檔案中寫入多個方法對資料庫進行操作時,需要在對應的

xml

檔案中,寫入多條

select

,

insert

,

delete

等語句,此時可以在xml檔案中用結果映射的方式進行統一比對處理,代碼如下:

<!--namespace:一般寫對應的接口路徑-->
<mapper namespace="com.lanou.mapper.StudentMapper">

    <!--MyBatis的結果映射:
        如果當實體類的屬性名和資料庫表的列名不一緻的情況下,
     需要使用結果映射來確定資料的一緻性
     要求:需要将所有的映射寫在sql語句之上
     -->
    <resultMap id="BaseMap" type="com.lanou.bean.Student">
        <!--
           column:資料庫表的列名.property:實體類的屬性名
           id:隻有這個是特殊的
           其他的都用result即可
        -->
        <id column="id" property="id"/>
        <result column="name" property="name"/>
    </resultMap>
           

二、寫上結果映射後,在寫select等執行語句時,可以用resultMap=”ID”的形式進行映射,示例如下:

<select id="allListStudent" resultMap="BaseMap">

        SELECT * FROM student

    </select>
           

三、資料庫查詢語句中,Mybats提供一種方法,可以将查詢條件歸集到一個标簽中,将其ID設定好,這樣用到對應條件的參數時,可以根據ID來進行操作,友善使用,示例如下:

<!--儲存一段sql片段,以供反複使用-->
    <sql id="WaHaHa">
        id,name
    </sql>

    <select id="allListStudent" resultMap="BaseMap">

        SELECT
         <include refid="WaHaHa"/>
         FROM student

    </select>
           

四、當對資料庫進行增删改查等多項操作時,有時需要考慮根據某項參數來進行操作,或者直接操作實體類對象,代碼如下:

public interface StudentMapper {
    //查詢所有的學生
    List<Student> allListStudent();
    //如果參數有多個,需要使用@Param注解規定參數的别名
    void insertStudent(@Param("sname") String name);
    //直接插入student
    void insertStu(Student student);
    //删除
    void deleteStudent(@Param("sid") Integer id);
    //更新資料
    void updateStudent(Student student);
}
           

五、根據以上代碼可以知道,用注解@Param的方式對參數進行規定别名,在xml檔案中要與設定的别名對應上,其中的Type,需要用到的是parameterType,映射到具體的實體類但是該parameterType可寫可不寫,xml代碼如下:

<insert id="insertStudent">
        INSERT INTO student VALUES (NULL,#{sname});
    </insert>

<insert id="insertStu" parameterType="com.lanou.bean.Student">
       INSERT INTO student VALUES (NULL ,#{name})
</insert>

<delete id="deleteStudent">
       DELETE FROM student WHERE id=#{sid};
</delete>

<update id="updateStudent">
      UPDATE student SET name=#{name} WHERE  id = #{id};
</update>
           

繼續閱讀