package com.itheima.service;  // 定义接口所在的包路径：com.itheima.service

import com.itheima.po.PageInfo;  // 导入 PageInfo 类，用于封装分页信息，包含当前页、每页条数、总记录数等
import com.itheima.po.Student;  // 导入 Student 类，用于表示学生实体类，通常包含学生的各种属性
import org.apache.ibatis.annotations.Param;  // 导入 MyBatis 注解，用于指定参数名（此处代码没有实际使用）

import java.util.List;  // 导入 List 类，用于存储多个 Student 对象，表示多个学生记录

/**
 * 用户Service层接口  // 该接口定义了学生管理的业务操作
 */
public interface StudentService {

    /**
     * 分页查询学生信息
     * @param s_name 学生姓名（可选的查询条件）
     * @param s_studentid 学生ID（可选的查询条件）
     * @param s_classid 班级ID（可选的查询条件）
     * @param s_classname 班级名称（可选的查询条件）
     * @param pageIndex 当前页码
     * @param pageSize 每页显示的记录数
     * @return 返回一个 PageInfo<Student> 对象，封装了分页信息和查询结果
     */
    public PageInfo<Student> findPageInfo(String s_name, Integer s_studentid, Integer s_classid, 
                                          String s_classname, Integer pageIndex, Integer pageSize);

    /**
     * 通过学生ID删除学生信息
     * @param s_id 学生ID
     * @return 返回影响的行数，通常 1 表示删除成功，0 表示删除失败
     */
    public int deleteStudent(Integer s_id);  // 删除学生信息

    /**
     * 添加学生信息
     * @param student 要添加的学生对象
     * @return 返回影响的行数，通常 1 表示添加成功，0 表示添加失败
     */
    public int addStudent(Student student);  // 添加学生信息

    /**
     * 修改学生信息
     * @param student 要更新的学生对象
     * @return 返回影响的行数，通常 1 表示更新成功，0 表示更新失败
     */
    public int updateStudent(Student student);  // 修改学生信息

    /**
     * 根据学生ID查询学生信息
     * @param s_id 学生ID
     * @return 返回查询到的学生对象，如果没有找到，返回 null
     */
    public Student findStudentById(Integer s_id);  // 根据学生ID查询学生信息

    /**
     * 获取所有学生信息
     * @return 返回一个 List<Student>，包含所有学生的信息
     */
    public List<Student> getAll();  // 获取所有学生信息
}
