package com.sf.mapper;


import com.sf.entity.Classes;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author WanJl
 * @version 1.0
 * @title ClassesMapper
 * @description
 * @create 2025/11/9
 */
public interface ClassesMapper {
    /**
     * 查询所有班级信息，包括班级内的学生信息集合
     * @return
     */
    //查询班级信息
    @Select("SELECT * FROM classes")
    @Results({
            @Result(column = "id", property = "id"),
            @Result(column = "name", property = "name"),
            //一对多需要查的内容
            @Result(
                    column = "id",   //classess 表的id
                    property = "studentList",
                    javaType = List.class,
                    many = @Many(select = "com.sf.mapper.StudentMapper.selectByClassId")
            )
    })
    List<Classes> selectAll();

}

/*
实体类--跟数据库表对应的，那么就是表名大写。
表名：student
如果数据库表名带有前缀：tb_student、sys_user
那么实体类要去掉前缀"tb_"
如果是系统用户(sys_user)和普通用户(user)做区分，
可以将系统用户表名转换为驼峰：SysUser。更多的是用包进行区分
实体类名：Student
持久层-Mapper接口：StudentMapper
Mapper映射文件：StudentMapper.xml
Mapper的测试类：StudentMapperTest
服务层-Service接口：StudentService
Service的测试类：StudentServiceTest
服务层-Service实现类：StudentServiceImpl
控制层-Controller：StudentController
 */





