1. 程式人生 > >Mybatis學習筆記(二)-Mybatis配置檔案與對映檔案詳解

Mybatis學習筆記(二)-Mybatis配置檔案與對映檔案詳解

一、Mybatis配置檔案詳解

以下是mybatis.xml檔案,提倡放在src目錄下,檔名任意

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <!-- 載入類路徑下的屬性檔案 -->
    <properties resource="db.properties"
/>
<!-- 設定類型別名(在書寫XXXMapper.xml配置檔案時,其中的全路徑名可以使用別名代替) --> <typeAliases> <typeAlias type="com.madman0621.entity.User" alias="user"/> </typeAliases> <!-- 設定一個預設的連線環境資訊 --> <environments default="development"> <!-- 連線環境資訊,取一個任意唯一的名字 -->
<environment id="development"> <!-- mybatis使用jdbc事務管理方式 --> <transactionManager type="JDBC"/> <!-- mybatis使用連線池方式來獲取連線 --> <dataSource type="POOLED"> <!-- 配置與資料庫互動的4個必要屬性 --> <property
name="driver" value="${driver_class}"/>
<property name="url" value="${url}"/> <property name="username" value="${uname}"/> <property name="password" value="${upass}"/> </dataSource> </environment> </environments> <!-- 載入對映檔案--> <mappers> <mapper resource="com/madman0621/entity/UserMapper.xml"/> </mappers> </configuration>

db.properties檔案的內容為:

uname=root
upass=root
driver_class=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test

initPoolSize=5
maxPoolSize=10

二、Mybaits對映檔案詳解

以下是StudentMapper.xml檔案,提倡放在與實體同目錄下,檔名任意

<?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">

<!-- namespace屬性是名稱空間,必須唯一,java程式碼中根據名稱空間呼叫其方法 -->
<mapper namespace="mynamespace">

    <!-- resultMap標籤:對映實體與表 
         type屬性:表示實體全路徑名(全路徑名可以使用在mybatis.xml檔案中配置的別名代替)
         id屬性:為實體與表的對映取一個任意的唯一的名字
    -->
<!-- 當實體屬性與表字段名不相同的時候,必須書寫以下對應程式碼
         當實體屬性與表字段名相同的時候,以下程式碼可選 
     -->
    <resultMap type="student" id="studentMap">
        <!-- id標籤:對映主鍵屬性
             result標籤:對映非主鍵屬性
             property屬性:實體的屬性名
             column屬性:表的欄位名  
        -->                         
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="sal" column="sal"/>
    </resultMap>

<!-- 
        insert標籤:要書寫insert這麼一個sql語句
        id屬性:為insert這麼一個sql語句取一個任意唯一的名字
        parameterType:要執行的dao中的方法的引數,如果是類的話,必須使用全路徑類(全路徑名可以使用在mybatis.xml檔案中配置的別名代替)
    -->
    <insert id="add1">
        insert into students(id,name,sal) values(1,'哈哈',7000)
    </insert>

    <insert id="add2" parameterType="student">
        insert into students(id,name,sal) values(#{id},#{name},#{sal})
    </insert>

    <!-- 根據ID查詢學生
         如果引數不是一個實體的話,只是一個普通變數,例如:int,double,String
         這裡的#{中間的變數名可以隨便寫},不過提倡就用方法的形參
         當實體類屬性與表字段名不相同的時候,返回資料使用resultMap屬性,mybatis會將查詢出來的表記錄和studentMap這個id所對應的對映結果相互匹配
     -->
    <select id="findById" parameterType="int" resultMap="studentMap">
        select id,name,sal from students where id = #{anything}
    </select>

    <!-- 查詢所有學生 
         理論上resultType要寫List<Student>
         但這裡只需書寫List中的型別即可,即只需書寫Student的全路徑名
         當實體類屬性和表字段名一一對應相同的時候,返回資料使用resultType屬性,只需要填寫類的全路徑名
    -->
    <select id="findAll" resultType="student">
        select id,name,sal from students
    </select>

    <!-- 更新學生 -->
    <update id="update" parameterType="student">
        update students set name=#{name},sal=#{sal} where id=#{id}
    </update>

    <!-- 刪除學生 --> 
    <delete id="delete" parameterType="student">
        delete from students where id = #{id}
    </delete>
    <!-- 
        注意:這個insert/update/delete標籤只是一個模板,在做操作時,其實是以SQL語句為核心的
             即在做增/刪/時,insert/update/delete標籤可通用,
             但做查詢時只能用select標籤
             我們提倡什麼操作就用什麼標籤
    --> 

</mapper>