学生管理系统2.0(2)

表设计

首先分析我们需要哪些数据库表,管理员表、学生信息表、班级表、学院表、教师表,目前先确定这几张表。

管理员表应当包含主键ID、管理员用户名、管理员密码。

学生表应当包含主键ID、学生姓名、学生性别、学生学号、所在班级ID。

班级表应当包含主键ID、班级名称、所在学院ID。

学院表应当包含主键ID、学院名称。

教师表应当包含主键ID、教师姓名、所在学院ID。

各表格关系图如图所示。

MySQL安装(可跳过)

下面进行MySQL的安装与数据库、表格的创建。

访问MySQL官网:https://www.mysql.com/downloads/,选择DOMNLOADS,选择社区版

根据你的系统选择下载版本

 如果下载的是zip包,解压后进入bin目录下在命令行中执行

mysqld --install

安装MySQL服务,再执行

mysqld --initialize --console

进行初始化并记录随机产生的密码。

使用命令

net start mysql

启动MySQL服务,使用命令

mysql -uroot -p

然后输入刚刚记录的密码,进行MySQL的登录。接着使用命令

alter user 'root'@'localhost' identified by 'XXX'

修改root用户的密码。退出后重新使用新密码进行登录。

数据库表创建

 登录数据库后执行命令

CREATE DATABASE SMS

创建SMS数据库。

下面的命令用于创建各个表。

CREATE TABLE `sms`.`college`  (
  `id` int NOT NULL COMMENT AUTO_INCREMENT '主键',
  `name` varchar(32) NULL COMMENT '学院名',
  PRIMARY KEY (`id`)
) COMMENT = '学院信息表';

CREATE TABLE `sms`.`class`  (
  `id` int NOT NULL COMMENT AUTO_INCREMENT '主键',
  `name` varchar(32) NULL COMMENT '班级名',
  `college_id` int NULL COMMENT '所在学院id',
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_class_college_id_college` FOREIGN KEY (`college_id`) REFERENCES `sms`.`college` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE `sms`.`student`  (
  `id` int NOT NULL COMMENT AUTO_INCREMENT '主键',
  `name` varchar(32) NULL COMMENT '姓名',
  `gender` bit NULL COMMENT '性别',
  `student_number` varchar(32) NULL COMMENT '学号',
  `class_id` int NULL COMMENT '所在班级id',
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_student_class_id_class` FOREIGN KEY (`class_id`) REFERENCES `sms`.`class` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE `sms`.`teacher`  (
  `id` int NOT NULL COMMENT AUTO_INCREMENT '主键',
  `name` varchar(32) NULL COMMENT '教师姓名',
  `college_id` int NULL COMMENT '所在学院',
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_teacher_college_id_college` FOREIGN KEY (`college_id`) REFERENCES `sms`.`college` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE `sms`.`user`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(32) NOT NULL COMMENT '账号',
  `password` varchar(32) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
);

Maven配置

在pom.xml文件中进行相关依赖的配置:

<dependencies>
        <!--SpringBoot web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.2</version>
        </dependency>

        <!--MyBatis Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

        <!--MySQL驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>

        <!--Lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>

        <!--swagger依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!--MyBatis Plus自动生成文件插件依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>

        <!--Spring test依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.6.2</version>
            <scope>test</scope>
        </dependency>

        <!--fastjson依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>
    </dependencies>

 可以将version字段放在properties标签内进行统一管理。

MyBatis Plus生成类文件

使用MyBatis Plus进行相关类的自动生成,代码如下,请注意要写自己对应的项目位置等信息:

package pers.lee.sms;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class Generator {

    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql:///sms", "root", "199676")
                .globalConfig(builder -> {
                    builder.author("Sirius") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("C:\\Users\\Sirius\\Desktop\\student_management_system\\src\\main\\java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("pers.lee.sms") // 设置父包名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "C:\\Users\\Sirius\\Desktop\\student_management_system\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {

                    builder.addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

生成后文件结构如下:

除Application.java外均为自动生成。

生成后需要在mapper包下的文件内添加@Mapper注解,以及在Application.java类中添加@MapperScan注解,如下:

package pers.lee.sms;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("pers.lee.sms.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 其中@MapperScan注解的value为需要扫描的包名,这样配置就代表扫描mapper包下的所有含有@Mapper注解的类。

配置完成后,由于我们在Maven中引入了Lombok依赖,所以可以将生成的实体类文件中的只保留字段,删掉各种setter和getter,在类名处使用@Data注解,该注解会自动为文件补全各种setter、getter,好处是若我们后续对文件增添新的字段,就不需要手动的进行新方法的编写。例如下面的代码:

package pers.lee.sms.entity;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <p>
 * 学院信息表
 * </p>
 *
 * @author Sirius
 * @since 2022-01-06
 */
@ApiModel(value = "College对象", description = "学院信息表")
@Data
public class College implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("主键")
    private Integer id;

    @ApiModelProperty("学院名")
    private String name;
}

SpringBoot配置

在完成上述步骤后可以对SpringBoot进行一些配置,在resources文件夹中新建application.properties或application.yml,SpringBoot支持两种格式的配置文件,此处使用properties,加上连接数据库的相关配置信息,如下:

# 数据库相关配置
spring.datasource.username=root
spring.datasource.password=199676
spring.datasource.url=jdbc:mysql://localhost:3306/sms
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 配置数据库连接池
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=180000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-timeout=30000

测试配置

此时可以向college表中插入几条数据用于测试:

在test文件夹中编写测试代码:

package pers.lee.sms;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import pers.lee.sms.entity.College;
import pers.lee.sms.mapper.CollegeMapper;

import java.util.List;

@SpringBootTest
public class SampleTest {

    @Autowired
    private CollegeMapper collegeMapper;

    @Test
    public void testSelect() {
        List<College> collegeList = collegeMapper.selectList(null);
        collegeList.forEach(System.out::println);
    }
}

 测试结果如下:

与我们插入的数据一致,说明配置文件中的用户名密码没有问题。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值