feat(database): 初始化成绩管理系统数据库结构和实体类

- 创建Clazz、Department、Major、Notice、Student等实体类
- 配置MyBatis全局设置和数据库连接信息
- 更新项目模块依赖库和数据源配置
- 修改数据库配置从ssm_farm到ssm_score_sys
- 添加完整的数据库表结构定义和测试数据
- 移除旧测试类并创建新的MyBatis测试类
- 配置IDE SQL方言和项目依赖库引用
main
CesarH 2 weeks ago
parent d09c2f50fa
commit e69d324f70

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@localhost" uuid="2e07ca1c-b2e7-4736-9ec7-91fcd49ea206">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="lib (2)">
<CLASSES>
<root url="file://$PROJECT_DIR$/grademanagement-SpringMVCProject/web/WEB-INF/lib" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$PROJECT_DIR$/grademanagement-SpringMVCProject/web/WEB-INF/lib" recursive="false" />
</library>
</component>

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="lib (3)">
<CLASSES>
<root url="file://$PROJECT_DIR$/grademanagement-MyBatisProject/lib" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$PROJECT_DIR$/grademanagement-MyBatisProject/lib" recursive="false" />
</library>
</component>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/grademanagement-MyBatisProject/src/ssm_score_sys.sql" dialect="GenericSQL" />
<file url="PROJECT" dialect="MySQL" />
</component>
</project>

@ -4,8 +4,11 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/com/ssm/mapper" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib (3)" level="project" />
<orderEntry type="library" name="lib" level="project" />
</component>
</module>

@ -0,0 +1,59 @@
package com.ssm.entity;
public class Clazz {
private Integer classId;
private String className;
private Integer majorId; // 关联专业ID
private String grade;
public Clazz() {}
public Clazz(Integer classId, String className, Integer majorId, String grade) {
this.classId = classId;
this.className = className;
this.majorId = majorId;
this.grade = grade;
}
public Integer getClassId() {
return classId;
}
public void setClassId(Integer classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public Integer getMajorId() {
return majorId;
}
public void setMajorId(Integer majorId) {
this.majorId = majorId;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Class{" +
"classId=" + classId +
", className='" + className + '\'' +
", majorId=" + majorId +
", grade='" + grade + '\'' +
'}';
}
}

@ -0,0 +1,70 @@
package com.ssm.entity;
public class Department {
private Integer deptId;
private String deptName;
private String deptCode;
private String deptPhone;
private String deptAddress;
public Department() {}
public Department(Integer deptId, String deptName, String deptCode, String deptPhone, String deptAddress) {
this.deptId = deptId;
this.deptName = deptName;
this.deptCode = deptCode;
this.deptPhone = deptPhone;
this.deptAddress = deptAddress;
}
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getDeptCode() {
return deptCode;
}
public void setDeptCode(String deptCode) {
this.deptCode = deptCode;
}
public String getDeptPhone() {
return deptPhone;
}
public void setDeptPhone(String deptPhone) {
this.deptPhone = deptPhone;
}
public String getDeptAddress() {
return deptAddress;
}
public void setDeptAddress(String deptAddress) {
this.deptAddress = deptAddress;
}
@Override
public String toString() {
return "Department{" +
"deptId=" + deptId +
", deptName='" + deptName + '\'' +
", deptCode='" + deptCode + '\'' +
", deptPhone='" + deptPhone + '\'' +
", deptAddress='" + deptAddress + '\'' +
'}';
}
}

@ -0,0 +1,70 @@
package com.ssm.entity;
public class Major {
private Integer majorId;
private String majorName;
private String majorCode;
private Integer deptId; // 关联院系ID
private Integer studyYear;
public Major() {}
public Major(Integer majorId, String majorName, String majorCode, Integer deptId, Integer studyYear) {
this.majorId = majorId;
this.majorName = majorName;
this.majorCode = majorCode;
this.deptId = deptId;
this.studyYear = studyYear;
}
public Integer getMajorId() {
return majorId;
}
public void setMajorId(Integer majorId) {
this.majorId = majorId;
}
public String getMajorName() {
return majorName;
}
public void setMajorName(String majorName) {
this.majorName = majorName;
}
public String getMajorCode() {
return majorCode;
}
public void setMajorCode(String majorCode) {
this.majorCode = majorCode;
}
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public Integer getStudyYear() {
return studyYear;
}
public void setStudyYear(Integer studyYear) {
this.studyYear = studyYear;
}
@Override
public String toString() {
return "Major{" +
"majorId=" + majorId +
", majorName='" + majorName + '\'' +
", majorCode='" + majorCode + '\'' +
", deptId=" + deptId +
", studyYear=" + studyYear +
'}';
}
}

@ -0,0 +1,83 @@
package com.ssm.entity;
import java.util.Date;
public class Notice {
private Integer noticeId;
private String title;
private String content;
private Date publishTime;
private String publisher;
private Integer status;
public Notice() {}
public Notice(Integer noticeId, String title, String content, Date publishTime, String publisher, Integer status) {
this.noticeId = noticeId;
this.title = title;
this.content = content;
this.publishTime = publishTime;
this.publisher = publisher;
this.status = status;
}
public Integer getNoticeId() {
return noticeId;
}
public void setNoticeId(Integer noticeId) {
this.noticeId = noticeId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getPublishTime() {
return publishTime;
}
public void setPublishTime(Date publishTime) {
this.publishTime = publishTime;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "Notice{" +
"noticeId=" + noticeId +
", title='" + title + '\'' +
", content='" + content + '\'' +
", publishTime=" + publishTime +
", publisher='" + publisher + '\'' +
", status=" + status +
'}';
}
}

@ -0,0 +1,92 @@
package com.ssm.entity;
public class Student {
private Integer studentId;
private String studentNo;
private String studentName;
private String gender;
private Integer age;
private Integer classId; // 关联班级ID
private String phone;
public Student() {}
public Student(Integer studentId, String studentNo, String studentName, String gender, Integer age, Integer classId, String phone) {
this.studentId = studentId;
this.studentNo = studentNo;
this.studentName = studentName;
this.gender = gender;
this.age = age;
this.classId = classId;
this.phone = phone;
}
public Integer getStudentId() {
return studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
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 getClassId() {
return classId;
}
public void setClassId(Integer classId) {
this.classId = classId;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"studentId=" + studentId +
", studentNo='" + studentNo + '\'' +
", studentName='" + studentName + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", classId=" + classId +
", phone='" + phone + '\'' +
'}';
}
}

@ -1,12 +0,0 @@
package com.ssm.test;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
}
}

@ -0,0 +1,22 @@
package com.ssm.test;
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 java.io.IOException;
import java.io.Reader;
public class TestMyBatis {
public static void main(String[] args) throws IOException {
Reader reader = Resources.getResourceAsReader("config.xml");
//SqlSession工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//SqlSession对象:代表了和数据库的一次对话
SqlSession session = factory.openSession();
System.out.println("MyBatis入门成功");
//关闭链接
session.close();
}
}

@ -1,8 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis全局配置文件 -->
<configuration>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 开启驼峰命名映射 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm_score_sys?serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8&amp;useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ssm/mapper/StudentMapper.xml"/>
<mapper resource="com/ssm/mapper/DepartmentMapper.xml"/>
<mapper resource="com/ssm/mapper/MajorMapper.xml"/>
<mapper resource="com/ssm/mapper/NoticeMapper.xml"/>
<mapper resource="com/ssm/mapper/ClassMapper.xml"/>
</mappers>
</configuration>

@ -0,0 +1,136 @@
-- 1. 创建数据库(按作业命名规则:库名=ssm_工程名这里示例ssm_score_sys
CREATE DATABASE IF NOT EXISTS ssm_score_sys DEFAULT CHARSET utf8mb4;
USE ssm_score_sys;
-- 删除已存在的表(注意顺序,先删子表再删父表)
DROP TABLE IF EXISTS notice;
DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS class;
DROP TABLE IF EXISTS major;
DROP TABLE IF EXISTS department;
-- ==============================================
-- 模块1院系管理组员1
-- ==============================================
CREATE TABLE department (
dept_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '院系ID',
dept_name VARCHAR(50) NOT NULL COMMENT '院系名称',
dept_code VARCHAR(20) UNIQUE COMMENT '院系编码',
dept_phone VARCHAR(20) COMMENT '联系电话',
dept_address VARCHAR(100) COMMENT '院系地址'
);
-- 插入10条数据
INSERT INTO department(dept_name, dept_code, dept_phone, dept_address) VALUES
('信息工程学院', 'IE001', '024-12345678', '实训楼A座3楼'),
('机械工程学院', 'ME002', '024-87654321', '实训楼B座1楼'),
('电气工程学院', 'EE003', '024-11112222', '实训楼A座5楼'),
('自动化学院', 'AU004', '024-33334444', '实训楼C座2楼'),
('计算机学院', 'CS005', '024-55556666', '实训楼D座4楼'),
('管理学院', 'MA006', '024-77778888', '行政楼2楼'),
('外语学院', 'FL007', '024-99990000', '教学楼E座6楼'),
('艺术学院', 'AR008', '024-12348765', '艺术楼1楼'),
('土木学院', 'CE009', '024-43215678', '实训楼B座4楼'),
('材料学院', 'MT010', '024-87651234', '实训楼A座7楼');
-- ==============================================
-- 模块2专业管理组员2与院系关联
-- ==============================================
CREATE TABLE major (
major_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '专业ID',
major_name VARCHAR(50) NOT NULL COMMENT '专业名称',
major_code VARCHAR(20) UNIQUE COMMENT '专业编码',
dept_id INT COMMENT '所属院系ID外键关联department.dept_id',
study_year INT COMMENT '学制(年)',
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
);
-- 插入10条数据
INSERT INTO major(major_name, major_code, dept_id, study_year) VALUES
('自动化', 'ZDH01', 1, 4),
('电气工程及其自动化', 'DQGC02', 3, 4),
('机械设计制造及其自动化', 'JXSJ03', 2, 4),
('计算机科学与技术', 'JSJK04', 5, 4),
('软件工程', 'RJGC05', 5, 4),
('电子信息工程', 'DZXX06', 1, 4),
('土木工程', 'TMGC07', 9, 4),
('材料成型及控制工程', 'CLXC08', 10, 4),
('英语', 'YY09', 7, 4),
('财务管理', 'CWGL10', 6, 4);
-- ==============================================
-- 模块3班级管理关联专业为学生表做外键
-- ==============================================
CREATE TABLE class (
class_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '班级ID',
class_name VARCHAR(50) NOT NULL COMMENT '班级名称',
major_id INT COMMENT '所属专业ID外键关联major.major_id',
grade VARCHAR(10) COMMENT '年级',
class_teacher VARCHAR(50) COMMENT '班主任姓名',
FOREIGN KEY (major_id) REFERENCES major(major_id)
);
-- 插入10条数据
INSERT INTO class(class_name, major_id, grade, class_teacher) VALUES
('自动化2班', 1, '2023', '王老师'),
('电气1班', 2, '2023', '李老师'),
('机械1班', 3, '2023', '张老师'),
('计算机1班', 4, '2023', '刘老师'),
('软件工程1班', 5, '2023', '陈老师'),
('电子信息1班', 6, '2023', '赵老师'),
('土木1班', 7, '2023', '孙老师'),
('材料1班', 8, '2023', '周老师'),
('英语1班', 9, '2023', '吴老师'),
('财务管理1班', 10, '2023', '郑老师');
-- ==============================================
-- 模块4学生管理组长与班级关联
-- ==============================================
CREATE TABLE student (
student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生ID',
student_no VARCHAR(20) UNIQUE NOT NULL COMMENT '学号',
student_name VARCHAR(50) NOT NULL COMMENT '姓名',
gender VARCHAR(4) COMMENT '性别',
age INT COMMENT '年龄',
class_id INT COMMENT '所属班级ID外键关联class.class_id',
phone VARCHAR(20) COMMENT '联系电话',
FOREIGN KEY (class_id) REFERENCES class(class_id)
);
-- 插入10条数据
INSERT INTO student(student_no, student_name, gender, age, class_id, phone) VALUES
('2023001', '张三', '', 20, 1, '13800138001'),
('2023002', '李四', '', 19, 1, '13800138002'),
('2023003', '王五', '', 20, 2, '13800138003'),
('2023004', '赵六', '', 19, 3, '13800138004'),
('2023005', '孙七', '', 20, 4, '13800138005'),
('2023006', '周八', '', 19, 5, '13800138006'),
('2023007', '吴九', '', 20, 6, '13800138007'),
('2023008', '郑十', '', 19, 7, '13800138008'),
('2023009', '钱十一', '', 20, 8, '13800138009'),
('2023010', '陈十二', '', 19, 9, '13800138010');
-- ==============================================
-- 模块5公告栏管理组员3
-- ==============================================
CREATE TABLE notice (
notice_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '公告ID',
title VARCHAR(100) NOT NULL COMMENT '公告标题',
content TEXT COMMENT '公告内容',
publish_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
publisher VARCHAR(50) COMMENT '发布人',
status INT DEFAULT 1 COMMENT '状态1:发布 0:下架)'
);
-- 插入10条数据
INSERT INTO notice(title, content, publisher, status) VALUES
('2023级开学通知', '请全体同学9月1日返校报到携带身份证和录取通知书。', '教务处', 1),
('选课系统维护通知', '系统将于8月20日-22日维护暂停选课服务。', '信息中心', 1),
('实训安全须知', '实训期间必须穿戴劳保用品,遵守实验室安全规定。', '实训中心', 1),
('奖学金评定通知', '本学期奖学金评定工作开始,请符合条件的同学提交申请。', '学生处', 1),
('运动会报名通知', '学校第15届运动会将于10月举行各班开始报名。', '体育部', 1),
('图书馆闭馆通知', '图书馆将于9月15日闭馆整理图书暂停借阅服务。', '图书馆', 1),
('四六级考试报名', '2023年下半年四六级考试报名已开始请按时报名。', '外语学院', 1),
('停电检修通知', '9月10日上午8:00-12:00教学楼停电检修请提前准备。', '后勤处', 1),
('新生军训安排', '2023级新生军训将于9月5日开始为期14天。', '武装部', 1),
('疫情防控提醒', '请全体同学做好个人防护,坚持每日健康打卡。', '校医院', 1);

@ -1,4 +1,4 @@
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm_farm?serverTimezone=Asia/Shanghai
url=jdbc:mysql://localhost:3306/ssm_score_sys?serverTimezone=Asia/Shanghai
user=root
password=root
Loading…
Cancel
Save