近年来,Java作为一门广泛应用于后端开发的编程语言,具备了广泛的应用领域和丰富的开发资源。在前几天的博客中,我们探讨了如何搭建前后端环境,为接下来的开发工作打下了坚实的基础。今天,我们将进一步扩展我们的项目,并实现一个令人期待的功能——查询所有学生的信息。
这个功能对于学生管理系统来说至关重要。我们可以通过这个功能一次性查看系统中所有学生的信息,包括他们的姓名、年龄、以及其他重要的个人数据。无论是学生导员、教工还是学生自己,都可以方便地获取到所需的信息。让我们继续深入学习并实现这个功能吧!
package com.czxy.domain;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
/**
* @author 薛慕昭
* @description
*/
@Table(name="tb_student")
public class Student {
@Id
@Column(name="s_id")
private Integer sid; //学生ID
private String sname; //姓名
private Integer age; //年龄
private Date birthday; //生日
private String gender; //性别
@Column(name="c_id")
private Integer cid; //所属班级id
//多对一:多个学生属于一个班级
@Transient //临时,表示数据库没有对应列
private Classes classes; //所属班级
private String cityIds; //城市:320000,321300,321322
//多对多:不同学生选修不同的课程
@Transient //临时,表示数据库没有对应列
private List<Course> courseList;
@Transient //临时,表示数据库没有对应列
private Integer courseCount; //选课数
package com.czxy.domain;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author 薛慕昭
* @description
*/
@Table(name = "tb_class")
public class Classes {
@Id
private Integer cid;
private String cname; //班级名称
@Column(name = "teacher1_id")
private int teacher1Id; //授课老师
@Column(name = "teacher2_id")
private int teacher2Id; //助理老师
@Column(name = "teacher3_id")
private int teacher3Id; //辅导员老师
package com.czxy.domain;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author 薛慕昭
* @description
*/
@Table(name = "tb_course")
public class Course {
@Id
@Column(name = "c_id")
private Integer cid;
private String cname;
@Column(name = "`desc`")
private String desc;
package com.czxy.vo;
/**
* @author 薛慕昭
* @description
*/
public class StudentVo {
private Integer classId; //班级id
private String studentName; //学生姓名
private Integer startAge; //开始年龄
private Integer endAge; //结束年龄
package com.czxy.mapper;
import com.czxy.domain.Student;
import tk.mybatis.mapper.common.Mapper;
/**
* @author 薛慕昭
* @description
*/
public interface StudentMapper extends Mapper<Student> {
}
package com.czxy.mapper;
import com.czxy.domain.Classes;
import tk.mybatis.mapper.common.Mapper;
/**
* @author 薛慕昭
* @description
*/
public interface ClassesMapper extends Mapper<Classes> {
}
package com.czxy.mapper;
import com.czxy.domain.Course;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author 薛慕昭
* @description
*/
public interface CourseMapper extends Mapper<Course> {
/**
* 查询指定学生的所有课程
* @param sid
* @return
*/
@Select("select c.* from tb_course c, tb_student_course sc where c.c_id = sc.c_id and sc.s_id = #{sid}")
public List<Course> selectAllBySid(@Param("sid") Integer sid);
}
接口
package com.czxy.service;
import com.czxy.domain.Student;
import com.czxy.vo.StudentVo;
import com.github.pagehelper.PageInfo;
/**
* @author 薛慕昭
* @description
*/
public interface StudentService {
/**
* 查询(基本、分页、条件)
* @param studentVo
* @param pageNum
* @param pageSize
* @return
*/
PageInfo<Student> condition(StudentVo studentVo, Integer pageNum, Integer pageSize);
}
实现类
package com.czxy.service.impl;
import com.czxy.domain.Classes;
import com.czxy.domain.Course;
import com.czxy.domain.Student;
import com.czxy.mapper.ClassesMapper;
import com.czxy.mapper.CourseMapper;
import com.czxy.mapper.StudentMapper;
import com.czxy.service.StudentService;
import com.czxy.vo.StudentVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.util.List;
/**
* @author 薛慕昭
* @description
*/
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
@Resource
private StudentMapper studentMapper;
@Resource
private ClassesMapper classesMapper;
@Resource
private CourseMapper courseMapper;
@Override
public PageInfo<Student> condition(StudentVo studentVo, Integer pageNum, Integer pageSize) {
//1 拼凑条件
// 1.0 获得条件对象
Example studentExample = new Example(Student.class);
Example.Criteria studentCriteria = studentExample.createCriteria();
// 1.1 班级
if(studentVo.getClassId() != null) {
studentCriteria.andEqualTo("cid", studentVo.getClassId());
}
// 1.2 姓名 不能为null,不能为“” , %张%
if(studentVo.getStudentName() != null && !"".equals(studentVo.getStudentName())) {
studentCriteria.andLike("sname", "%"+studentVo.getStudentName()+"%");
}
// 1.3 年龄 30~50
if(studentVo.getStartAge() != null) {
studentCriteria.andGreaterThanOrEqualTo("age", studentVo.getStartAge());
}
if(studentVo.getEndAge() != null) {
studentCriteria.andLessThanOrEqualTo("age", studentVo.getEndAge());
}
//2 分页
PageHelper.startPage(pageNum, pageSize);
//3.查询
List<Student> studentList = studentMapper.selectByExample(studentExample);
//4 关联
for(Student student : studentList) {
// 4.1 班级信息
Classes classes = classesMapper.selectByPrimaryKey(student.getCid());
student.setClasses(classes);
// 查询学生选修的可成
List<Course> courseList = courseMapper.selectAllBySid(student.getSid());
// 4.2 选课数
student.setCourseCount(courseList.size());
// 4.3 选课详情
student.setCourseList(courseList);
}
//5 封装
PageInfo<Student> pageInfo = new PageInfo<>(studentList);
return pageInfo;
}
}
package com.czxy.controller;
import com.czxy.domain.Student;
import com.czxy.service.StudentService;
import com.czxy.vo.StudentVo;
import com.github.pagehelper.PageInfo;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author 薛慕昭
* @description
*/
@RestController
@RequestMapping("/student")
public class StudentController {
@Resource
private StudentService studentService;
@PostMapping("/condition/{pageSize}/{pageNum}")
public ResponseEntity<PageInfo<Student>> condition(
@RequestBody StudentVo studentVo,
@PathVariable("pageSize") Integer pageSize,
@PathVariable("pageNum") Integer pageNum) {
//查询
PageInfo<Student> pageInfo =
studentService.condition(studentVo, pageNum, pageSize );
//处理结果
return ResponseEntity.ok(pageInfo);
}
}
{{scope.row.gender == 1 ? '男': '女'}}
{{course.cname}}
编辑
删除
{{pageInfo}}
-
查询
{{scope.row.gender == 1 ? '男': '女'}}
{{course.cname}}
编辑
删除
{{pageInfo}}
-
查询
{{scope.row.gender == 1 ? '男': '女'}}
{{course.cname}}
编辑
删除
通过本文的学习,我们成功地实现了学生管理项目的查询所有功能。我们通过构建一个学生管理系统,并添加了测试数据,以模拟真实的学生信息。通过调用系统提供的showAllStudents()方法,我们可以轻松地查看并打印所有学生的信息。这个功能为学生管理系统增添了强大的查询能力,使得管理工作更加高效和便捷。
在今天的学习中,我们不仅巩固了Java的基础知识,还深入了解了如何处理和展示大量的数据。随着项目的发展,我们将继续探索更多有趣和实用的功能,并逐步建立一个完整的学生管理系统。希望本文对你有所启发和帮助,如果你有任何疑问或建议,请随时与我们分享。期待下一篇博客,继续探索Java开发的奇妙世界!
SizeChange(val) {
//修改 每页个数
//console.log(`每页 ${val} 条`);
this.pageInfo.pageSize = val
this.pageInfo.pageNum = 1
//再查询
this.selectAllStudent()
},
handleCurrentChange(val) {
//修改当前页
//console.log(`当前页: ${val}`);
this.pageInfo.pageNum = val
//再查询
this.selectAllStudent()
}
},
mounted() { //页面加载成功
//查询所有学生
this.selectAllStudent()
//查询所有班级
this.selectAllClasses()
},
}
</script>
<style>
.line {
text-align: center;
}
</style>
通过本文的学习,我们成功地实现了学生管理项目的查询所有功能。我们通过构建一个学生管理系统,并添加了测试数据,以模拟真实的学生信息。通过调用系统提供的showAllStudents()方法,我们可以轻松地查看并打印所有学生的信息。这个功能为学生管理系统增添了强大的查询能力,使得管理工作更加高效和便捷。
在今天的学习中,我们不仅巩固了Java的基础知识,还深入了解了如何处理和展示大量的数据。随着项目的发展,我们将继续探索更多有趣和实用的功能,并逐步建立一个完整的学生管理系统。希望本文对你有所启发和帮助,如果你有任何疑问或建议,请随时与我们分享。期待下一篇博客,继续探索Java开发的奇妙世界!