|
|
|
|
@ -7,34 +7,71 @@ import com.hua.dao.StudentBasicInforDAO;
|
|
|
|
|
import com.hua.entity.CriterStudent;
|
|
|
|
|
import com.hua.entity.StudentBasicInformation;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `StudentBasicInforDAOImpl`类是一个数据访问对象(DAO)的具体实现类,主要负责与学生基本信息相关的数据持久化操作。
|
|
|
|
|
* 它继承自泛型的`DAO`类,并实现了`StudentBasicInforDAO`接口,通过编写SQL语句与数据库交互,实现对学生基本信息的各种数据库操作,比如查询、插入、更新、删除以及按特定条件筛选查询等功能。
|
|
|
|
|
*/
|
|
|
|
|
public class StudentBasicInforDAOImpl extends DAO<StudentBasicInformation> implements StudentBasicInforDAO {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `getAll`方法用于获取所有学生的基本信息。
|
|
|
|
|
* 具体实现是构造了一条简单的SQL查询语句(`SELECT * FROM studentBasicInformation;`),该语句的作用是从名为`studentBasicInformation`的数据库表中选取所有记录。
|
|
|
|
|
* 然后调用父类`DAO`中的`getForList`方法来执行这个查询操作,该方法会将从数据库中获取到的所有记录转换为`List<StudentBasicInformation>`类型的列表并返回。
|
|
|
|
|
* 这个列表中的每一个元素都是`StudentBasicInformation`类型的对象,对应着数据库表中的一条记录,也就代表着一位学生的完整基本信息。
|
|
|
|
|
*
|
|
|
|
|
* @return 返回包含所有学生基本信息的列表,如果数据库表中不存在任何相关记录,那么将返回一个空列表。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<StudentBasicInformation> getAll() {
|
|
|
|
|
String sql = "SELECT * FROM studentBasicInformation;";
|
|
|
|
|
return getForList(sql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `get`方法用于根据给定的学生ID获取特定学生的基本信息。
|
|
|
|
|
* 首先,它会构建一条带有条件的SQL查询语句(`select *from studentBasicInformation where studentId =?`),这里的`studentId`就是方法传入的参数,作为查询条件用于在`studentBasicInformation`表中精确查找对应学生的记录。
|
|
|
|
|
* 接着,调用父类`DAO`中的`get`方法来执行这个带有条件的查询操作,这个`get`方法会返回查询到的符合条件的`StudentBasicInformation`对象,如果在数据库中没有找到对应学生的基本信息记录,则返回`null`。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 要查询基本信息的学生的唯一标识符,其类型为`Long`,这个参数用于在数据库表中精准定位相应的学生基本信息记录。
|
|
|
|
|
* @return 返回对应学生的基本信息对象,如果数据库中不存在该学生的相关记录,则返回`null`。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public StudentBasicInformation get(Long studentId) {
|
|
|
|
|
String sql = "select *from studentBasicInformation where studentId = ?";
|
|
|
|
|
String sql = "select *from studentBasicInformation where studentId =?";
|
|
|
|
|
return get(sql, studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `insert`方法用于向数据库中插入一条新的学生基本信息记录。
|
|
|
|
|
* 先是构造了一条插入数据的SQL语句(`insert into studentBasicInformation values(?,?,?,?,?,?,?,?,?,?)`),此语句明确了要向`studentBasicInformation`表中插入数据的列以及对应的值的占位符(`?`),表示将插入十条数据(对应学生基本信息对象中的十个属性)。
|
|
|
|
|
* 然后调用父类`DAO`中的`update`方法(虽然名称是`update`,但在这里实际上执行的是插入操作,这是一种在数据访问层常见的命名方式,根据传入的不同参数和SQL语句来区分实际执行的是插入还是更新等操作),
|
|
|
|
|
* 将学生基本信息对象(`studentBasicInfor`)中的各个属性值按照SQL语句中占位符的顺序依次传递进去,从而把新的学生基本信息数据插入到数据库的`studentBasicInformation`表中。
|
|
|
|
|
*
|
|
|
|
|
* @param studentBasicInfor 这是一个包含要插入的学生基本信息的`StudentBasicInformation`对象,其各个属性值(如学生ID、姓名、性别等)将被按照顺序插入到数据库表对应的列中。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void insert(StudentBasicInformation studentBasicInfor) {
|
|
|
|
|
String sql = "insert into studentBasicInformation " +
|
|
|
|
|
"values(?,?,?,?,?,?,?,?,?,?)";
|
|
|
|
|
update(sql , studentBasicInfor.getStudentId(), studentBasicInfor.getStudentName(), studentBasicInfor.getGender(),
|
|
|
|
|
update(sql, studentBasicInfor.getStudentId(), studentBasicInfor.getStudentName(), studentBasicInfor.getGender(),
|
|
|
|
|
studentBasicInfor.getGrade(),studentBasicInfor.getClassName(),studentBasicInfor.getAcademy(),
|
|
|
|
|
studentBasicInfor.getProfession(),studentBasicInfor.getCampus(),studentBasicInfor.getPhone(),
|
|
|
|
|
studentBasicInfor.getHomeAddress());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `update`方法用于根据传入的学生基本信息对象来更新数据库中对应的记录。
|
|
|
|
|
* 首先构建了一条更新数据的SQL语句(`update studentbasicinformation set studentName =?,gender =?, grade =?, className =?, " +
|
|
|
|
|
* "academy =?, profession =?, campus =?, phone =?, homeAddress =? where studentId =?`),该语句指定了要更新的列以及更新的条件。
|
|
|
|
|
* 更新的条件是通过`studentId`来定位要更新的记录,也就是根据传入的学生基本信息对象中的学生ID找到数据库中对应的那条记录,然后将该对象中除`studentId`(用于定位记录)之外的各个属性值按照SQL语句中占位符的顺序依次传递进去,
|
|
|
|
|
* 调用父类`DAO`中的`update`方法来执行这个更新操作,使得数据库中的学生基本信息与传入的学生基本信息对象中的最新信息保持一致。
|
|
|
|
|
*
|
|
|
|
|
* @param studentBasicInfor 这是一个包含更新后学生基本信息的`StudentBasicInformation`对象,其属性值(除了用于定位记录的学生ID)将用于更新数据库中对应记录的相应列。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void update(StudentBasicInformation studentBasicInfor) {
|
|
|
|
|
String sql = "update studentbasicinformation set studentName = ?,gender = ?, grade = ?, className = ? ," +
|
|
|
|
|
"academy = ?, profession = ?, campus = ?, phone = ?, homeAddress = ? where studentId = ?";
|
|
|
|
|
String sql = "update studentbasicinformation set studentName =?,gender =?, grade =?, className =?, " +
|
|
|
|
|
"academy =?, profession =?, campus =?, phone =?, homeAddress =? where studentId =?";
|
|
|
|
|
update(sql, studentBasicInfor.getStudentName(), studentBasicInfor.getGender(),
|
|
|
|
|
studentBasicInfor.getGrade(),studentBasicInfor.getClassName(),studentBasicInfor.getAcademy(),
|
|
|
|
|
studentBasicInfor.getProfession(),studentBasicInfor.getCampus(),studentBasicInfor.getPhone(),
|
|
|
|
|
@ -42,26 +79,51 @@ public class StudentBasicInforDAOImpl extends DAO<StudentBasicInformation> imple
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `delete`方法用于根据学生ID删除数据库中对应的学生基本信息记录。
|
|
|
|
|
* 它构建了一条删除数据的SQL语句(`delete from studentBasicInformation where studentId =?`),这里以传入的`studentId`(类型为`Long`)作为删除条件,用于在`studentBasicInformation`表中定位要删除的那条学生记录。
|
|
|
|
|
* 之后调用父类`DAO`中的`update`方法(底层会通过执行SQL的`executeUpdate`等相关操作来实现删除功能)来执行这个删除操作,进而使得数据库中对应学生的基本信息数据被移除。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 要删除学生基本信息记录的学生的唯一标识符,其类型为`Long`,该参数用于在数据库表中准确地定位要删除的记录。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void delete(Long studentId) {
|
|
|
|
|
String sql = "delete from studentBasicInformation where studentId = ?";
|
|
|
|
|
String sql = "delete from studentBasicInformation where studentId =?";
|
|
|
|
|
update(sql, studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `getCountWithStudentId`方法用于根据学生ID获取满足特定条件(此处具体是统计该学生ID对应的记录数量)的学生基本信息记录数量。
|
|
|
|
|
* 构建了一条用于统计记录数量的SQL语句(`select count(studentId) from studentBasicInformation where studentId =?`),通过`studentId`这个条件来筛选出符合要求的记录,并统计其数量。
|
|
|
|
|
* 接着调用父类`DAO`中的`getForValue`方法来执行这个查询操作,最终返回统计得到的记录数量值,其返回类型为`Integer`。
|
|
|
|
|
*
|
|
|
|
|
* @param studentId 用于定位和筛选学生基本信息记录的学生的唯一标识符,其类型为`Long`,在数据库表中确定要统计数量的记录范围时会用到该参数。
|
|
|
|
|
* @return 返回满足给定条件(也就是对应`studentId`的学生基本信息记录)的记录数量,返回值类型为`Integer`。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public Integer getCountWithStudentId(Long studentId) {
|
|
|
|
|
String sql = "select count(studentId) from studentBasicInformation where studentId = ?";
|
|
|
|
|
String sql = "select count(studentId) from studentBasicInformation where studentId =?";
|
|
|
|
|
return getForValue(sql,studentId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* `getForListWithCriterStudent`方法用于根据给定的`CriterStudent`对象中的条件信息来获取符合条件的学生基本信息列表。
|
|
|
|
|
* 首先构建了一条带有多个模糊查询条件的SQL语句(`select * from studentBasicInformation where academy like? and Profession like? and ClassName like? " +
|
|
|
|
|
* "and StudentName like? and StudentId like?`),这里通过`like`关键字结合传入的`CriterStudent`对象中的学院(`academy`)、专业(`Profession`)、班级名(`ClassName`)、学生姓名(`StudentName`)以及学生ID(`StudentId`)等信息作为模糊查询条件,
|
|
|
|
|
* 目的是从`studentBasicInformation`表中筛选出符合这些模糊条件的学生基本信息记录。
|
|
|
|
|
* 然后调用父类`DAO`中的`getForList`方法来执行这个查询操作,并将查询结果以`List<StudentBasicInformation>`的形式返回,返回的列表中包含了满足给定条件的所有学生基本信息对象,如果不存在匹配记录则返回空列表。
|
|
|
|
|
*
|
|
|
|
|
* @param student 这是一个包含了用于查询学生基本信息的各种条件信息的`CriterStudent`类型的对象,其各个属性值将作为模糊查询条件来筛选相应的学生基本信息记录。
|
|
|
|
|
* @return 返回满足给定条件的学生基本信息信息列表,列表中的元素为`StudentBasicInformation`类型的对象,如果没有符合条件的记录,则返回空列表。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<StudentBasicInformation> getForListWithCriterStudent(CriterStudent student) {
|
|
|
|
|
String sql = "select * from studentBasicInformation " +
|
|
|
|
|
"where academy like ? and Profession like ? and ClassName like ? " +
|
|
|
|
|
"and StudentName like ? and StudentId like ?";
|
|
|
|
|
|
|
|
|
|
"where academy like? and Profession like? and ClassName like? " +
|
|
|
|
|
"and StudentName like? and StudentId like?";
|
|
|
|
|
|
|
|
|
|
return getForList(sql, student.getAcademy(), student.getProfession(), student.getClassName(),
|
|
|
|
|
student.getStudentName(),student.getStudentId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|