Academic Assistance Management System Built with Spring Boot and Vue
System Overview
This project implements a comprehensive platform designed to facilitate academic support activities. The architecture leverages a modern separation of concerns, utilizing a robust backend API coupled with a dynamic frontend interface to manage tuotring relationships and student progress efficiently.
Technology Stack
Backend: Spring Boot
Spring Boot streamlines the deevelopment of stand-alone, production-grade Spring based Applications. It prioritizes convention over configuraton, minimizing the need for extensive XML setup. By embedding servers like Tomcat directly, it allows applications to run as executable jars. The framework supports auto-configuration, enabling developers to start projects with minimal boilerplate code while maintaining enterprise-level features.
Frontend: Vue.js
Vue.js is a progressive JavaScript framework used for building user interfaces. Unlike monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable. The core library focuses on the view layer only, making it easy to pick up and integrate with other libraries or existing projects. Key features include a virtual DOM for optimized rendering, reactive data binding, and a component-based architecture that promotes code reusability and maintainability.
Database: MySQL
MySQL serves as the relational database management system for persistent storage. Known for its speed and reliability, it supports standard SQL queries and offers various storage engines such as InnoDB. Its open-source nature and cross-platform compatibility make it a standard choice for web applications requiring structured data management.
Configuration Details
The following configuration file outlines the server settings, database connection parameters, and MyBatis Plus integration strategies.
server:
port: 9090
servlet:
context-path: /academic-help
tomcat:
uri-encoding: UTF-8
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/academy_support_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: admin
password: secure_pass_2024
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
resources:
static-locations: classpath:/static/,file:/uploads/
mybatis-plus:
mapper-locations: classpath:/mappers/*.xml
type-aliases-package: com.academic.support.entity
global-config:
db-config:
id-type: auto
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
jdbc-type-for-null: 'null'
Data Access Layer
The MyBatis mapper XML defines the SQL operations for the volunteer entity, handling result mapping and dynamic query generation.
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.academic.support.mapper.VolunteerMapper">
<resultMap id="VolunteerResultMap" type="com.academic.support.entity.VolunteerEntity">
<id property="volunteerId" column="volunteer_id"/>
<result property="username" column="username"/>
<result property="passwordHash" column="password_hash"/>
<result property="realName" column="real_name"/>
<result property="gender" column="gender"/>
<result property="role" column="role"/>
<result property="age" column="age"/>
<result property="joinDate" column="join_date"/>
<result property="phone" column="phone"/>
<result property="email" column="email"/>
<result property="idCard" column="id_card"/>
</resultMap>
<select id="findVolunteerList" resultMap="VolunteerResultMap">
SELECT * FROM volunteer_table
<where>
deleted = 0
<if test="ew.sqlSegment != null and ew.sqlSegment != ''">
${ew.sqlSegment}
</if>
</where>
</select>
<select id="findVolunteerDetail" resultMap="VolunteerResultMap">
SELECT * FROM volunteer_table
<where>
volunteer_id = #{id} AND deleted = 0
</where>
</select>
</mapper>