|
|
|
|
@ -6,66 +6,132 @@ import com.hua.dao.DAO;
|
|
|
|
|
import com.hua.dao.StudentGradeDAO;
|
|
|
|
|
import com.hua.entity.StudentGrade;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `StudentGradeDAOIpml`类是数据访问对象(DAO)的具体实现类,用于操作与学生成绩相关的数据,
|
|
|
|
|
* 它继承自泛型的`DAO`类,并实现了`StudentGradeDAO`接口,通过编写具体的SQL语句来实现对学生成绩信息在数据库中的增删改查以及按特定条件查询等操作。
|
|
|
|
|
*/
|
|
|
|
|
public class StudentGradeDAOIpml extends DAO<StudentGrade> implements StudentGradeDAO {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取所有学生成绩信息的方法。
|
|
|
|
|
* 该方法通过构造一条查询所有记录的SQL语句(针对名为`studentGrade`的数据库表),即 `SELECT * FROM studentGrade;`,
|
|
|
|
|
* 然后调用父类`DAO`中的`getForList`方法来执行这个查询操作,将从数据库中获取到的所有记录转换为`List<StudentGrade>`类型的列表并返回,
|
|
|
|
|
* 列表中的每个元素都是`StudentGrade`类型的对象,对应数据库表中的一条记录,代表一位学生某一门课程的成绩相关信息。
|
|
|
|
|
*
|
|
|
|
|
* @return 返回包含所有学生成绩信息的列表,若数据库表中不存在相关记录,则返回一个空列表。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<StudentGrade> getAll() {
|
|
|
|
|
String sql = "SELECT * FROM studentGrade;";
|
|
|
|
|
return getForList(sql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据学生ID获取该学生所有课程成绩信息的方法。
|
|
|
|
|
* 首先构建了一条带有条件查询的SQL语句,使用`studentId`(参数类型为`Long`)作为查询条件,从`studentGrade`表中筛选出对应学生的所有课程成绩记录,
|
|
|
|
|
* 接着调用父类`DAO`中的`getForList`方法来执行这个带有条件的查询操作,该方法会将查询结果以`List<StudentGrade>`的形式返回,
|
|
|
|
|
* 返回的列表中包含了该学生对应的所有课程成绩对象,若该学生在数据库中不存在成绩记录则返回空列表。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 要查询课程成绩信息的学生的唯一标识符(类型为`Long`),用于在数据库表中定位相应的学生课程成绩记录。
|
|
|
|
|
* @return 返回对应学生的所有课程成绩信息列表,列表元素为`StudentGrade`类型的对象,若该学生无课程成绩记录则返回空列表。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<StudentGrade> getAllCourseGrade(Long studentId){
|
|
|
|
|
String sql = "SELECT * FROM studentGrade where studentId = ?;";
|
|
|
|
|
public List<StudentGrade> getAllCourseGrade(Long studentId) {
|
|
|
|
|
String sql = "SELECT * FROM studentGrade where studentId =?";
|
|
|
|
|
return getForList(sql, studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 向数据库中插入一条新的学生成绩信息记录的方法。
|
|
|
|
|
* 先构造了一条插入数据的SQL语句,明确了要插入数据的列以及对应的值的占位符(`?`),
|
|
|
|
|
* 然后调用父类`DAO`中的`update`方法(此处的`update`方法实际上执行的是插入操作,名称上可能有些容易混淆,但功能符合此处插入数据的需求),
|
|
|
|
|
* 将学生成绩对象(`studentGrade`)中的各个属性值按照SQL语句中占位符的顺序依次传递进去,
|
|
|
|
|
* 从而将新的学生成绩数据插入到数据库的`studentGrade`表中。
|
|
|
|
|
*
|
|
|
|
|
* @param studentGrade 包含要插入的学生成绩信息的`StudentGrade`对象,其各个属性值将被插入到数据库表对应的列中。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void insert(StudentGrade studentGrade) {
|
|
|
|
|
String sql = "insert into studentGrade " +
|
|
|
|
|
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
|
update(sql ,studentGrade.getYearTerm(), studentGrade.getStudentId(), studentGrade.getStudentName(),
|
|
|
|
|
update(sql,studentGrade.getYearTerm(), studentGrade.getStudentId(), studentGrade.getStudentName(),
|
|
|
|
|
studentGrade.getCourseId(),studentGrade.getCourseName(),studentGrade.getScore(),studentGrade.getGradePoint(),
|
|
|
|
|
studentGrade.getCredit(),studentGrade.getCourseClass(),studentGrade.getStudyWay(),studentGrade.getExamWay(),
|
|
|
|
|
studentGrade.getGradeWay(),studentGrade.getEffectivity(),studentGrade.getRemarks());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据传入的学生成绩对象更新数据库中对应记录的方法。
|
|
|
|
|
* 构建了一条更新数据的SQL语句,指定了要更新的列以及更新的条件(通过`studentId`来定位要更新的记录),
|
|
|
|
|
* 然后调用父类`DAO`中的`update`方法,将学生成绩对象(`studentGrade`)中除`studentId`(用于定位记录)之外的各个属性值按照SQL语句中占位符的顺序依次传递进去,
|
|
|
|
|
* 实现对数据库中对应学生成绩记录的更新操作,确保数据库中的数据与传入的学生成绩对象中的最新信息保持一致。
|
|
|
|
|
*
|
|
|
|
|
* @param studentGrade 包含更新后学生成绩信息的`StudentGrade`对象,其属性值将用于更新数据库中对应记录的相应列。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void update(StudentGrade studentGrade) {
|
|
|
|
|
String sql = "update studentGrade set yearTerm = ?, studentName = ?,courseId = ?, courseName = ?, " +
|
|
|
|
|
"score = ? ,gradePoint = ? ,credit = ? ,courseClass = ? ,studyWay = ?, examWay = ?, " +
|
|
|
|
|
"gradeWay = ?, effectivity = ?, remarks = ? where studentId = ?";
|
|
|
|
|
update(sql ,studentGrade.getYearTerm(), studentGrade.getStudentName(),
|
|
|
|
|
String sql = "update studentGrade set yearTerm =?, studentName =?,courseId =?, courseName =?, " +
|
|
|
|
|
"score =?, gradePoint =?, credit =?, courseClass =?, studyWay =?, examWay =?, " +
|
|
|
|
|
"gradeWay =?, effectivity =?, remarks =? where studentId =?";
|
|
|
|
|
update(sql,studentGrade.getYearTerm(), studentGrade.getStudentName(),
|
|
|
|
|
studentGrade.getCourseId(),studentGrade.getCourseName(),studentGrade.getScore(),studentGrade.getGradePoint(),
|
|
|
|
|
studentGrade.getCredit(),studentGrade.getCourseClass(),studentGrade.getStudyWay(),studentGrade.getExamWay(),
|
|
|
|
|
studentGrade.getGradeWay(),studentGrade.getEffectivity(),studentGrade.getRemarks(), studentGrade.getStudentId());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据学生ID删除数据库中对应的学生成绩记录的方法。
|
|
|
|
|
* 构建了一条删除数据的SQL语句,以`studentId`(类型为`Long`)作为删除条件,从`studentGrade`表中删除对应学生的所有成绩记录,
|
|
|
|
|
* 然后调用父类`DAO`中的`update`方法(底层可能通过执行SQL的`executeUpdate`等相关操作来实现删除功能)来执行删除操作,
|
|
|
|
|
* 使得数据库中对应学生的成绩数据被移除。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 要删除学生成绩记录的学生的唯一标识符(类型为`Long`),用于在数据库表中定位要删除的记录。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void delete(Long studentId) {
|
|
|
|
|
String sql = "delete from studentGrade where studentId = ?";
|
|
|
|
|
String sql = "delete from studentGrade where studentId =?";
|
|
|
|
|
update(sql, studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据学生ID获取满足特定条件(这里通过统计该学生ID对应的成绩记录数量来体现特定条件,具体取决于业务逻辑)的学生成绩记录数量的方法。
|
|
|
|
|
* 构建了一条用于统计记录数量的SQL语句(`select count(studentId) from studentGrade where studentId =?`),通过`studentId`来筛选符合条件的记录并统计其数量,
|
|
|
|
|
* 然后调用父类`DAO`中的`getForValue`方法来执行这个查询操作,并返回统计得到的记录数量值(类型为`Integer`)。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 用于定位和筛选学生成绩记录的学生的唯一标识符(类型为`Long`),用于在数据库表中确定要统计数量的记录范围。
|
|
|
|
|
* @return 返回满足给定条件(对应`studentId`的学生成绩记录)的记录数量,类型为`Integer`。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public Integer getCountWithStudentId(Long studentId) {
|
|
|
|
|
String sql = "select count(studentId) from studentGrade where studentId = ?";
|
|
|
|
|
String sql = "select count(studentId) from studentGrade where studentId =?";
|
|
|
|
|
return getForValue(sql,studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据学生ID和学年学期获取相应学生成绩信息的方法。
|
|
|
|
|
* 此方法会根据传入的学年学期(`yearTerm`)是否为 `null` 来动态构建不同的 SQL 查询语句。
|
|
|
|
|
* 如果 `yearTerm` 不为 `null`,则构建一条模糊查询的 SQL 语句,通过 `like` 关键字结合 `%` 通配符,在 `studentGrade` 表中查找学年学期包含指定 `yearTerm` 值且对应指定学生ID的成绩记录;
|
|
|
|
|
* 如果 `yearTerm` 为 `null`,则构建一条简单的根据学生ID查询的 SQL 语句,从 `studentGrade` 表中获取对应学生的所有成绩记录。
|
|
|
|
|
* 最后都会调用父类 `DAO` 中的 `getForList` 方法来执行相应的查询操作,并将查询结果以 `List<StudentGrade>` 类型的列表返回,
|
|
|
|
|
* 列表中的每个元素都是 `StudentGrade` 类型的对象,对应数据库表中的一条记录,代表该学生的某一门课程的成绩相关信息。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 要查询成绩信息的学生的唯一标识符(类型为`Long`),用于在数据库表中定位相应的学生成绩记录。
|
|
|
|
|
* @param yearTerm 表示学年学期的字符串,用于筛选对应学年学期下该学生的成绩记录,如果为 `null` 则查询该学生的所有成绩记录。
|
|
|
|
|
* @return 返回满足给定学生ID和学年学期条件的学生成绩信息列表,列表中的元素为`StudentGrade`类型的对象,若不存在匹配记录则返回空列表。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<StudentGrade> getAllWithYearTerm(Long studentId,
|
|
|
|
|
String yearTerm) {
|
|
|
|
|
String yearTerm) {
|
|
|
|
|
String sql;
|
|
|
|
|
|
|
|
|
|
if(yearTerm != null){
|
|
|
|
|
sql = "SELECT * FROM studentGrade where yearTerm like '%" + yearTerm +"%' and studentId = ?;";
|
|
|
|
|
|
|
|
|
|
if (yearTerm!= null) {
|
|
|
|
|
sql = "SELECT * FROM studentGrade where yearTerm like '%" + yearTerm + "%' and studentId =?";
|
|
|
|
|
return getForList(sql,studentId);
|
|
|
|
|
}else{
|
|
|
|
|
sql = "SELECT * FROM studentGrade where studentId = ?;";
|
|
|
|
|
} else {
|
|
|
|
|
sql = "SELECT * FROM studentGrade where studentId =?";
|
|
|
|
|
return getForList(sql,studentId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|