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