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

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

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

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