在线课程管理是教育类平台的核心功能模块,主要实现课程信息的维护、课程状态管控、学员与课程的关联管理等能力,基于Java生态的主流技术栈可以快速完成该功能的开发。

技术选型与准备
实现在线课程管理功能,我们选择以下技术栈:
- 后端框架:Spring Boot 2.7.x,简化项目搭建与配置
- 持久层框架:MyBatis,灵活操作数据库
- 数据库:MySQL 8.0,存储课程、学员等相关数据
- 构建工具:Maven,管理项目依赖
数据库表设计
首先需要设计两张核心表,分别是课程表和学员选课关联表:
| 表名 | 字段 | 类型 | 说明 |
|---|---|---|---|
| course | id | bigint | 课程ID,主键自增 |
| course_name | varchar(100) | 课程名称 | |
| teacher_name | varchar(50) | 授课教师 | |
| status | tinyint | 课程状态,0未开课 1开课中 2已结课 | |
| create_time | datetime | 创建时间 | |
| student_course | id | bigint | 关联ID,主键自增 |
| student_id | bigint | 学员ID | |
| course_id | bigint | 课程ID |
核心功能实现
课程实体类定义
首先定义课程对应的实体类,映射数据库表结构:
import java.util.Date;
public class Course {
private Long id;
private String courseName;
private String teacherName;
private Integer status;
private Date createTime;
// getter和setter方法
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
课程数据访问层实现
使用MyBatis编写课程相关的数据库操作接口和映射文件:
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface CourseMapper {
// 新增课程
int insertCourse(Course course);
// 根据ID查询课程
Course selectCourseById(@Param("id") Long id);
// 查询所有课程
List<Course> selectAllCourse();
// 更新课程信息
int updateCourse(Course course);
// 删除课程
int deleteCourseById(@Param("id") Long id);
}
对应的MyBatis映射文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.course.mapper.CourseMapper">
<insert id="insertCourse" parameterType="com.example.course.entity.Course">
INSERT INTO course (course_name, teacher_name, status, create_time)
VALUES (#{courseName}, #{teacherName}, #{status}, #{createTime})
</insert>
<select id="selectCourseById" resultType="com.example.course.entity.Course">
SELECT id, course_name as courseName, teacher_name as teacherName, status, create_time as createTime
FROM course
WHERE id = #{id}
</select>
<select id="selectAllCourse" resultType="com.example.course.entity.Course">
SELECT id, course_name as courseName, teacher_name as teacherName, status, create_time as createTime
FROM course
</select>
<update id="updateCourse" parameterType="com.example.course.entity.Course">
UPDATE course
SET course_name = #{courseName},
teacher_name = #{teacherName},
status = #{status}
WHERE id = #{id}
</update>
<delete id="deleteCourseById">
DELETE FROM course WHERE id = #{id}
</delete>
</mapper>
课程业务逻辑层实现
编写课程管理的业务逻辑类,封装核心操作:
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service
public class CourseService {
@Resource
private CourseMapper courseMapper;
// 新增课程,默认状态为未开课
public int addCourse(Course course) {
course.setStatus(0);
course.setCreateTime(new Date());
return courseMapper.insertCourse(course);
}
// 查询课程详情
public Course getCourseDetail(Long id) {
return courseMapper.selectCourseById(id);
}
// 查询所有课程
public List<Course> getAllCourseList() {
return courseMapper.selectAllCourse();
}
// 更新课程信息
public int editCourse(Course course) {
return courseMapper.updateCourse(course);
}
// 删除课程
public int removeCourse(Long id) {
return courseMapper.deleteCourseById(id);
}
}
课程控制层实现
编写接口层代码,对外提供课程管理的HTTP接口:
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/course")
public class CourseController {
@Resource
private CourseService courseService;
@PostMapping("/add")
public String addCourse(@RequestBody Course course) {
int result = courseService.addCourse(course);
return result > 0 ? "课程新增成功" : "课程新增失败";
}
@GetMapping("/detail")
public Course getCourseDetail(@RequestParam Long id) {
return courseService.getCourseDetail(id);
}
@GetMapping("/list")
public List<Course> getAllCourse() {
return courseService.getAllCourseList();
}
@PostMapping("/update")
public String updateCourse(@RequestBody Course course) {
int result = courseService.editCourse(course);
return result > 0 ? "课程更新成功" : "课程更新失败";
}
@GetMapping("/delete")
public String deleteCourse(@RequestParam Long id) {
int result = courseService.removeCourse(id);
return result > 0 ? "课程删除成功" : "课程删除失败";
}
}
功能扩展说明
上述代码实现了课程的基础增删改查功能,实际开发中还可以扩展更多能力:
- 添加课程状态流转校验,比如未开课的课程才能删除,已结课的课程不能修改内容
- 实现学员选课功能,通过
student_course表维护学员和课程的关联关系 - 添加课程分页查询、按状态筛选等能力,提升查询效率
- 增加操作日志记录,记录课程信息的变更历史
整个实现过程基于Java主流技术栈,代码结构清晰,后续可以根据业务需求灵活扩展功能,满足不同场景下的在线课程管理需求。
Java在线课程管理Spring_BootMySQLMyBatis修改时间:2026-06-10 23:12:36