本章将带领大家共同完成课程管理。与前面几个章节中有所不同,本章将在简单的增删改查的基础上增加少许的条件,使课程管理模块更加贴近生产环境。 # 需求分析 数据表是系统开发关键一环。ER图是数据表的缩影,可以更直观的查看数据表结构以及数据表之间的关系。ER图的规划没有最好,只有更好。对于相对复要的系统,一个优秀的ER图能够大幅的降低开发过程中的逻辑处理,进而有效的提升整个项目的开发进度。ER的规划依赖于真实有效的需求分析。在项目的开发周期中,需求分析完成后接着便是ER图的规划设计。ER的规划过程中,需要明确实体与实体间的关系,在明确实体间关系的过程程还会反推出一些在需求分析中没有及时发现的逻辑性问题,这有效地避免在开发过程中可能做的无用功。 本系统在课程管理层面的基本需要如下: 1. 每门课程只能有一门教师负责。 2. 教师可以负责多门课程。 3. 课程新建时,记录操作者(是哪位教师新建的)。 # ER图 根据需求分析规划ER图如下: ![](https://img.kancloud.cn/47/14/47143f8e3a0c104dfa658e50e3cfdf82_661x298.png) 在生产环境中,ER图确认后便开始按ER图建立实体。实体全部建立完成后,再建立实体与实体间的关系。本教程采用的按模块分步开发的方法,在开发的流程上完成一个实体的建立后再依托于该实体进行模块功能的开发。这与实际的生产环境的开发流程相背:生产环境中笔者所在团队是先建立上所有的实体,然后再按实际的项目需求来选择是否维护实体与实体的关系。 <hr> 1. 实体监听器。替换PrePersist。然后mockito后进行单元测试。 2. 异步验证器,用于添加课程时,课程的名称不能重复 3. 教师与课程,课程与教师时,展示下manyToOne与OneToMany的关系 为什么要使用mappedBy. 4. JsonView返回关联数据 5. @manyToMany. 分别为班级及课程加入manyToMany后,看看发生了什么。 6. 介绍下使用工厂模块改变if else: 建立个factory,获取全部课程时。调用factory中的获取全部课程的方法,factory依照当前是否管理员,选择输出哪个bean