<?xml version="1.0" encoding="UTF-8" ?>
<!-- 声明 MyBatis 映射文件的 DOCTYPE，指定其遵循 MyBatis 3.0 的 DTD -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- 定义该映射文件的命名空间，表示与 AdminDao 接口对应 -->
<mapper namespace="com.itheima.dao.AdminDao" >

    <!-- 登陆查询 SQL -->
    <select id="findAdmin" parameterType="Admin" resultType="Admin">
        <!-- 查询管理员表中符合条件的数据 -->
        select * from d_admin
        where
        <!-- 如果用户名不为空，加入条件 -->
        <if test="a_username!=null and a_username!='' ">
        a_username = #{a_username}
        </if>
        <!-- 如果密码不为空，加入条件 -->
        <if test="a_password!=null and a_password!='' ">
        and a_password = #{a_password}
        </if>
    </select>

    <!-- 分页查询管理员信息 -->
    <select id="getAdminList" parameterType="Admin" resultType="Admin">
        select * from d_admin
        <where>
            <!-- 根据用户名模糊查询 -->
            <if test="a_username!=null and a_username!='' ">
                and  a_username like  '%${a_username}%'
            </if>
            <!-- 根据描述模糊查询 -->
            <if test="a_describe!=null and a_describe!=''">
                and  a_describe like  '%${a_describe}%'
            </if>
            <!-- 根据管理员 ID 模糊查询 -->
            <if test="a_id!=null and a_id!=0">
                and  a_id like  '%${a_id}%'
            </if>
        </where>
        <!-- 按管理员 ID 升序排序 -->
        ORDER BY  a_id asc
        <!-- 分页限制 -->
        limit #{currentPage},#{pageSize}
    </select>

    <!-- 查询管理员总数据条数 -->
    <select id="totalCount" resultType="Integer">
        select count(a_id) from d_admin
        <where>
            <!-- 根据用户名模糊查询 -->
            <if test="a_username!=null and a_username!='' ">
                and  a_username like  '%${a_username}%'
            </if>
            <!-- 根据描述模糊查询 -->
            <if test="a_describe!=null and a_describe!=''">
                and  a_describe like  '%${a_describe}%'
            </if>
            <!-- 根据管理员 ID 查询 -->
            <if test="a_id!=null and a_id!=0">
                and  a_id like  '%${a_id}%'
            </if>
        </where>
    </select>

    <!-- 添加管理员信息 -->
    <insert id="addAdmin" parameterType="Admin" keyProperty="a_id" useGeneratedKeys="true">
        insert into d_admin (a_username,a_password,a_name,a_phone,a_power,a_describe)
        values(#{a_username},#{a_password},#{a_name},#{a_phone},#{a_power},#{a_describe})
    </insert>

    <!-- 通过管理员 ID 删除管理员信息 -->
    <delete id="deleteAdmin" parameterType="Integer" >
        delete from d_admin where a_id=#{a_id}
    </delete>

    <!-- 根据管理员 ID 查询管理员信息 -->
    <select id="findAdminById" parameterType="Integer" resultType="Admin">
        select * from d_admin where a_id=#{a_id}
    </select>

    <!-- 查询所有管理员信息 -->
    <select id="getAll" resultType="Admin">
        select * from d_admin;
    </select>

    <!-- 修改管理员信息 -->
    <update id="updateAdmin" parameterType="Admin">
        update d_admin
        <set>
            <!-- 如果用户名不为空，更新用户名 -->
            <if test="a_username!=null and a_username !=''">
                a_username=#{a_username},
            </if>
            <!-- 如果密码不为空，更新密码 -->
            <if test="a_password !=null and a_password !=''">
                a_password=#{a_password},
            </if>
            <!-- 如果姓名不为空，更新姓名 -->
            <if test="a_name !=null and a_name !=''">
                a_name=#{a_name},
            </if>
            <!-- 如果电话号码不为空，更新电话号码 -->
            <if test="a_phone !=null and a_phone !=0">
                a_phone=#{a_phone},
            </if>
            <!-- 如果权限不为空，更新权限 -->
            <if test="a_power !=null and a_power !=''">
                a_power=#{a_power},
            </if>
            <!-- 如果描述不为空，更新描述 -->
            <if test="a_describe!=null and a_describe!=''">
                a_describe=#{a_describe},
            </if>
        </set>
        <!-- 根据管理员 ID 更新数据 -->
        where a_id = #{a_id}
    </update>
</mapper>
