package com.cn.dao; // 定义接口所在的包名

import java.sql.SQLException; // 导入SQLException类
import java.util.List; // 导入List接口

import com.cn.domain.Admin; // 导入Admin实体类

/**
 * AdminDao.java接口，定义管理员数据访问对象（DAO）的操作。
 * <p>该接口声明了与管理员相关的数据库操作，包括添加、删除、修改、查询等。</p>
 * @author lxs
 * @date 2019年9月1日
 */
public interface AdminDao {
    /**
     * 添加管理员信息到数据库。
     * <p>该方法接受一个Admin对象作为参数，将其信息插入到数据库中。</p>
     * @param admin 要添加的管理员对象
     * @return 返回插入操作影响的行数
     * @throws SQLException 如果数据库操作出现异常
     */
    int add(Admin admin) throws SQLException;
    
    /**
     * 根据管理员ID从数据库中删除管理员信息。
     * <p>该方法接受一个管理员ID作为参数，根据该ID从数据库中删除对应的管理员记录。</p>
     * @param adminId 要删除的管理员ID
     * @return 返回删除操作影响的行数
     * @throws SQLException 如果数据库操作出现异常
     */
    int delete(int adminId) throws SQLException;
    
    /**
     * 更新数据库中的管理员信息。
     * <p>该方法接受一个Admin对象作为参数，根据对象中的ID更新数据库中的管理员记录。</p>
     * @param admin 包含更新信息的管理员对象
     * @return 返回更新操作影响的行数
     * @throws SQLException 如果数据库操作出现异常
     */
    int update(Admin admin) throws SQLException;
    
    /**
     * 查询数据库中的所有管理员信息。
     * <p>该方法返回一个包含所有管理员信息的列表。</p>
     * @return 返回包含所有管理员信息的列表
     * @throws SQLException 如果数据库操作出现异常
     */
    List<Admin> getAll() throws SQLException;
    
    /**
     * 根据管理员ID查询数据库中的管理员信息。
     * <p>该方法接受一个管理员ID作为参数，返回包含该ID的管理员信息。</p>
     * @param adminId 要查询的管理员ID
     * @return 返回包含指定ID的管理员信息
     * @throws SQLException 如果数据库操作出现异常
     */
    Admin getById(int adminId) throws SQLException;
    
    /**
     * 根据管理员姓名查询数据库中的管理员信息。
     * <p>该方法接受一个管理员姓名作为参数，返回包含该姓名的管理员信息。</p>
     * @param userName 要查询的管理员姓名
     * @return 返回包含指定姓名的管理员信息
     * @throws SQLException 如果数据库操作出现异常
     */
    Admin getByName(String userName) throws SQLException;
}
