mapper.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">

<!-- ==================代理方式=================
由mapper標籤開始,由/mapper結束,可以把它想成一個空間,是映射文件
屬性namespace:空間名,主要在代理中使用。這個namespace是唯一的。
這裏把mapper標籤和接口聯繫在一起了,namespace=寫接口路徑,映射文件要和接口在同一目錄下
 -->
<mapper namespace="com.dao.UserinfoDAO">
    <!-- =============映射關係標籤=============
    屬性type:寫po類的包名類名,由於之前定義了po類的別名,這裏就寫這個別名
    屬性id:是這個映射標籤的唯一標識
    id標籤是查詢結果集中的唯一標識
    屬性column:查詢出來的列名
    屬性property:是po類裏所指定的列名
    通常會在原列名後面加下劃線,這是固定的,這裏就是id後面_
     -->
    <resultMap type="com.po.UserinfoPO" id="userinfoMap">
        <result column="userid" property="userid"/>
        <result column="loginname" property="loginname"/>
        <result column="loginpass" property="loginpass"/>
        <result column="username" property="username"/>
        <result column="upower" property="upower"/>
        <result column="birthday" property="birthday"/>
        <result column="sex" property="sex"/>
    </resultMap>
    <!-- ==================定義sql片段==============
    sql:是sql片段標籤屬性id是該片段的唯一標識 -->
    <sql id="zd">
        userid,loginname,loginpass,username,upower,birthday,sex
    </sql>
    <!-- 增刪改查標籤裏的id:一定要和接口裏對應的方法名一致,
         resultMap輸出類型裏寫映射標籤裏的id 
         parameterType:輸入類型,規範輸入數據類型,指明查詢時使用的參數類型-->
    <!-- 驗證登錄 -->
    <select id="login" resultMap="userinfoMap" parameterType="com.po.UserinfoPO">    
        <!-- 用include標籤引入sql片段,refid寫定義sql片段的id,where標籤不要寫在片段裏 -->
        select <include refid="zd"/> from userinfo
        <where>            
                loginname=#{loginname} and loginpass=#{loginpass}
        </where>
    </select>
    
    <!-- 查詢用戶列表 -->
    <select id="userList" resultMap="userinfoMap" parameterType="com.po.UserinfoPO">
        <!-- 用include標籤引入sql片段,refid寫定義sql片段的id,where標籤不要寫在片段裏 -->
        select <include refid="zd"/> from userinfo
    </select>
    
    <!-- 查詢修改用戶信息的id -->
    <select id="updateid" resultMap="userinfoMap" parameterType="com.po.UserinfoPO">
        <!-- 用include標籤引入sql片段,refid寫定義sql片段的id,where標籤不要寫在片段裏 -->
        select <include refid="zd"/> from userinfo
        <where>userid=#{userid}</where>
    </select>
    
    <!-- 修改用戶信息 -->
     <update id="update" parameterType="com.po.UserinfoPO">
         update userinfo 
         set loginname=#{loginname},loginpass=#{loginpass},username=#{username},
             upower=#{upower},birthday=#{birthday},sex=#{sex}
         where userid=#{userid}     
     </update>
     
    <!-- 添加用戶信息 -->
    <insert id="insert" parameterType="com.po.UserinfoPO">
        insert into userinfo(<include refid="zd"/>) 
        values
        (#{userid},#{loginname},#{loginpass},#{username},#{upower},#{birthday},#{sex})
    </insert>
        
    <!-- 增刪改查標籤裏的id:一定要和接口裏對應的方法名一致 -->
    <delete id="delete" parameterType="int">
        delete from userinfo where userid=#{userid}
    </delete>
    
    <!-- 根據用戶名模糊查詢,根據權限查詢 -->
    <select id="select" resultMap="userinfoMap" parameterType="java.util.Map">
        <!-- 用include標籤引入sql片段,refid寫定義sql片段的id,where標籤不要寫在片段裏 -->
        select <include refid="zd"/> from userinfo
        <!-- 當頁面沒有輸入用戶名和選擇權限,就讓它的條件永遠爲真,就變成全查詢了 -->
        <where>
            <if test="username == null and username = '' and upower == -1">
                and 1=1
            </if>
            <if test="username != null and username !=''">
                and username LIKE '%${username}%' 
            </if>        
            <if test="upower != -1">
                and upower=#{upower} 
            </if>            
        </where>
    </select>
</mapper>



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章