Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Academic Assistance Management System Built with Spring Boot and Vue

Tech Oct 6 19

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>

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Comprehensive Guide to SSTI Explained with Payload Bypass Techniques

Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...

Implement Image Upload Functionality for Django Integrated TinyMCE Editor

Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.