mybatis考试

题目:学生选课管理系统(高级版,无事务)

数据库表结构(保持不变)

1.学生表(student)

id(主键, 自增)

name (学生姓名)

gender (性别)

age(年龄)

class_id(班级ID)

2.班级表(class)

id (主键, 自增)

class_name(班级名称)

课程表(course)

id (主键, 自增)

course_name (课程名称)

teacher(授课老师)

3.选课表(student_course)

id (主键, 自增)

student_id(学生ID, 外键)

course_id(课程ID, 外键)

score(成绩)

题目

动态查询学生信息

要求:根据传入的参数动态查询学生信息。参数包括学生姓名(模糊查询)、性别、年龄范围、班级名称。

示例:查询姓名为“张”、性别为“男”、年龄在18到22岁之间、班级名称为“计算机科学与技术1班”的学生。

分页查询所有学生及其选课信息

要求:分页查询所有学生的姓名、班级名称、所选课程名称及成绩,每页显示10条记录

统计每个班级的平均成绩

要求:统计每个班级的平均成绩,并按照平均成绩从高到低排序。

提示:需要关联学生表、班级表和选课表。

批量插入学生选课记录

要求:实现批量插入学生选课记录的功能,确保性能高效。

示例:一次性插入100条选课记录。

查询未选课的学生

要求:查询所有未选任何课程的学生信息。

查询每门课程的选课人数及平均成绩

要求:查询每门课程的选课人数和平均成绩,并按照选课人数从高到低排序。

动态更新学生信息

要求:根据传入的参数动态更新学生信息。参数包括学生ID、姓名、性别、年龄、班级ID,只更新非空的字段。

提示:使用 MyBatis 的动态 SQL

查询成绩排名前10的学生

要求:查询所有学生中,成绩排名前10的学生信息(包括姓名、班级名称、总成绩)。

提示:需要对选课表中的成绩进行汇总和排序。

查询每门课程的最高分、最低分和平均分

要求:查询每门课程的最高分、最低分和平均分,并按照课程名称排序。

二、解答

1.数据库

mybatis考试_第1张图片

mybatis考试_第2张图片

mybatis考试_第3张图片

mybatis考试_第4张图片

2.代码

dao

package com.qcby.dao;

import com.qcby.entity.StudentCourse;

import java.util.List;

public interface StudentCourseDao {
    List select();
}
package com.qcby.dao;
import com.qcby.entity.Course;
import com.qcby.entity.Student;
import com.qcby.entity.StudentCourse;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StudentDao {
    List select1(Student student);

    List select2(@Param("offset") int offset, @Param("pageSize") int pageSize);

    List select3();

    int insert(List studentCourses);

    List select4();

    List select5();

    int update(Student student);

    List select6();
}

entity

package com.qcby.entity;

public class Class {
    private Integer id;
    private String class_name;

    @Override
    public String toString() {
        return "Class{" +
                "id=" + id +
                ", class_name='" + class_name + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getClass_name() {
        return class_name;
    }

    public void setClass_name(String class_name) {
        this.class_name = class_name;
    }
}
package com.qcby.entity;

public class Course {
    private Integer id;
    private String course_name;
    private String teacher;

    private Double averageScore;
    private Integer studentCount;

    @Override
    public String toString() {
        return "Course{" +
                "id=" + id +
                ", course_name='" + course_name + '\'' +
                ", teacher='" + teacher + '\'' +
                ", averageScore=" + averageScore +
                ", studentCount=" + studentCount +
                '}';
    }

    public Double getAverageScore() {
        return averageScore;
    }

    public void setAverageScore(Double averageScore) {
        this.averageScore = averageScore;
    }

    public Integer getStudentCount() {
        return studentCount;
    }

    public void setStudentCount(Integer studentCount) {
        this.studentCount = studentCount;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCourse_name() {
        return course_name;
    }

    public void setCourse_name(String course_name) {
        this.course_name = course_name;
    }

    public String getTeacher() {
        return teacher;
    }

    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
}
package com.qcby.entity;

import java.util.List;

public class Student {
    private Integer id;
    private String name;
    private String gender;
    private Integer age;
    private Integer minAge;
    private Integer maxAge;
    private Integer class_id;
    private String className;
    private List studentCourses;

    private Double averageScore;
    private Double totalScore;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", minAge=" + minAge +
                ", maxAge=" + maxAge +
                ", class_id=" + class_id +
                ", className='" + className + '\'' +
                ", studentCourses=" + studentCourses +
                ", averageScore=" + averageScore +
                ", totalScore=" + totalScore +
                '}';
    }

    public Double getAverageScore() {
        return averageScore;
    }

    public void setAverageScore(Double averageScore) {
        this.averageScore = averageScore;
    }

    public Double getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(Double totalScore) {
        this.totalScore = totalScore;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public List getStudentCourses() {
        return studentCourses;
    }

    public void setStudentCourses(List studentCourses) {
        this.studentCourses = studentCourses;
    }

    public Integer getMinAge() {
        return minAge;
    }

    public void setMinAge(Integer minAge) {
        this.minAge = minAge;
    }

    public Integer getMaxAge() {
        return maxAge;
    }

    public void setMaxAge(Integer maxAge) {
        this.maxAge = maxAge;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getClass_id() {
        return class_id;
    }

    public void setClass_id(Integer class_id) {
        this.class_id = class_id;
    }
}
package com.qcby.entity;


public class StudentCourse{
    private Long id;
    private Long studentId;
    private Long courseId;
    private String score;
    private String student_name;
    private String class_name;
    private String courseName;
    private Double maxScore;
    private Double minScore;
    private Double avgScore;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public Long getStudentId() { return studentId; }
    public void setStudentId(Long studentId) { this.studentId = studentId; }

    public Long getCourseId() { return courseId; }
    public void setCourseId(Long courseId) { this.courseId = courseId; }

    public String getScore() { return score; }
    public void setScore(String score) { this.score = score; }

    public String getCourseName() { return courseName; }
    public void setCourseName(String courseName) { this.courseName = courseName; }

    public Double getMaxScore() { return maxScore; }
    public void setMaxScore(Double maxScore) { this.maxScore = maxScore; }

    public Double getMinScore() { return minScore; }
    public void setMinScore(Double minScore) { this.minScore = minScore; }

    public Double getAvgScore() { return avgScore; }
    public void setAvgScore(Double avgScore) { this.avgScore = avgScore; }

    public String getStudent_name() {
        return student_name;
    }

    public void setStudent_name(String student_name) {
        this.student_name = student_name;
    }

    public String getClass_name() {
        return class_name;
    }

    public void setClass_name(String class_name) {
        this.class_name = class_name;
    }

    @Override
    public String toString() {
        return "StudentCourse{" +
                "id=" + id +
                ", studentId=" + studentId +
                ", courseId=" + courseId +
                ", score='" + score + '\'' +
                ", student_name='" + student_name + '\'' +
                ", class_name='" + class_name + '\'' +
                ", courseName='" + courseName + '\'' +
                ", maxScore=" + maxScore +
                ", minScore=" + minScore +
                ", avgScore=" + avgScore +
                '}';
    }
}

mapper





    
        
        
        
        
    

    




    

    

    

    
        INSERT INTO `student_course` (student_id, course_id, score)
        VALUES
        
            (#{item.studentId}, #{item.courseId}, #{item.score})
        
    

    

    

    
        UPDATE `student`
        
            
                name = #{name},
            
            
                gender = #{gender},
            
            
                age = #{age},
            
            
                class_id = #{class_id}
            
        
        WHERE id = #{id}
    

    

配置文件




    
        
        
        
        
        
        
        
        
        
    
    
        
            
            
            
            
                
                
                
                
            
        
    
    
        
        
        
        
    

测试

import com.qcby.dao.StudentCourseDao;
import com.qcby.entity.StudentCourse;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class StudentCourseTest {
    private InputStream in = null;
    private SqlSession session = null;
    private StudentCourseDao studentCourseDao = null;

    @Before
    public void init() throws IOException {
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        session = factory.openSession();
        studentCourseDao = session.getMapper(StudentCourseDao.class);
    }

    @After
    public void destroy() throws IOException {
        session.close();
        in.close();
    }

    @Test
    public void select() {
        List resultList = studentCourseDao.select();

        System.out.println("课程成绩统计:");
        System.out.println("-----------------------------------");

        for (StudentCourse stats : resultList) {
            System.out.println("课程名称: " + stats.getCourseName());
            System.out.println("最高分: " + stats.getMaxScore());
            System.out.println("最低分: " + stats.getMinScore());
            System.out.println("平均分: " + stats.getAvgScore());
            System.out.println("-------------------");
        }
    }
}
import com.qcby.dao.StudentDao;
import com.qcby.entity.Course;
import com.qcby.entity.Student;
import com.qcby.entity.StudentCourse;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class StudentTest {
    private InputStream in = null;
    private SqlSession session = null;
    private StudentDao studentDao = null;

    @Before  //前置通知, 在方法执行之前执行
    public void init() throws IOException {
        //加载主配置文件,目的是为了构建SqlSessionFactory对象
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //通过SqlSessionFactory工厂对象创建SqlSesssion对象
        session = factory.openSession();
        //通过Session创建Dao接口代理对象
        studentDao = session.getMapper(StudentDao.class);
    }

    @After  //@After: 后置通知, 在方法执行之后执行 。
    public void destory() throws IOException {
        //释放资源
        session.close();
        in.close();
    }

    @Test
    public void select1() {
        Student student = new Student();
        student.setName("张");
        student.setGender("男");
        student.setMinAge(18);
        student.setMaxAge(22);
        student.setClassName("计算机科学与技术1班");
        List students = studentDao.select1(student);
        for (Student s : students) {
            System.out.println(s);
        }
    }

    @Test
    public void select2() {
        int pageNum = 1;
        int pageSize = 10;
        int offset = (pageNum - 1) * pageSize;
        List resultList = studentDao.select2(offset, pageSize);
        System.out.println("第 " + pageNum + " 页学生选课信息:");
        System.out.println("-----------------------------------");
        for (StudentCourse studentCourse : resultList) {
            System.out.println("学生姓名: " + studentCourse.getStudent_name());
            System.out.println("班级名称: " + studentCourse.getClass_name());
            System.out.println("课程名称: " + studentCourse.getCourseName());
            System.out.println("成绩: " + studentCourse.getScore());
            System.out.println("-------------------");
        }
        System.out.println("共查询到 " + resultList.size() + " 条记录");
    }

    @Test
    public void select3() {
        List resultList = studentDao.select3();
        for (Student student : resultList) {
            System.out.println("班级名称: " + student.getClassName());
            System.out.println("平均成绩: " + student.getAverageScore());
            System.out.println("-------------------");
        }
    }

    @Test
    public void insert() {
        List studentCourses = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            StudentCourse studentCourse = new StudentCourse();
            studentCourse.setStudentId((long) ((i % 4) + 1));
            studentCourse.setCourseId((long) ((i % 8) + 1));
            studentCourse.setScore("80");
            studentCourses.add(studentCourse);
        }

        int rows = studentDao.insert(studentCourses);
        System.out.println("插入的学生选课记录数: " + rows);
        session.commit();
    }

    @Test
    public void select4() {
        List students = studentDao.select4();
        for (Student student : students) {
            System.out.println(student);
        }
    }

    @Test
    public void select5() {
        List resultList = studentDao.select5();
        for (Course course : resultList) {
            System.out.println("课程名称: " + course.getCourse_name());
            System.out.println("平均成绩: " + course.getAverageScore());
            System.out.println("选课人数: " + course.getStudentCount());
            System.out.println("-------------------");
        }
    }

    @Test
    public void update() {
        Student student = new Student();
        student.setId(1);
        student.setName("三");
        student.setAge(18);
        int rows = studentDao.update(student);
        System.out.println("更新的记录数: " + rows);
        session.commit();
    }

    @Test
    public void select6() {
        List resultList = studentDao.select6();
        System.out.println("成绩排名前10的学生:");
        System.out.println("-----------------------------------");
        for (Student student : resultList) {
            System.out.println("学生姓名: " + student.getName());
            System.out.println("班级名称: " + student.getClassName());
            System.out.println("总成绩: " + student.getTotalScore());
            System.out.println("-------------------");
        }
    }
}

你可能感兴趣的:(mybatis考试)