返回

使用 Spring Boot+MyBatis Plus+JWT 构建问卷调查系统的完整指南

后端

前言

问卷调查系统在收集反馈、进行市场研究以及衡量客户满意度方面发挥着至关重要的作用。本文将介绍如何使用 Spring Boot、MyBatis Plus 和 JWT 来构建一个功能齐全的问卷调查系统。

系统概述

我们的问卷调查系统将包含以下功能:

  • 用户管理:允许用户注册和登录系统。
  • 问卷创建:允许用户创建和编辑问卷。
  • 问卷分析:允许用户查看问卷结果并生成报告。

技术栈

我们将使用以下技术栈来构建系统:

  • Spring Boot:一个用于构建 Java 应用程序的框架。
  • MyBatis Plus:一个 ORM 框架,可以简化数据库操作。
  • JWT:一种用于生成安全令牌的库。

项目设置

首先,我们需要创建一个新的 Spring Boot 项目。我们可以使用以下命令来做到这一点:

spring init问卷系统

这将创建一个新的 Spring Boot 项目。接下来,我们需要添加 MyBatis Plus 和 JWT 的依赖。我们可以通过在项目的 pom.xml 文件中添加以下依赖项来做到这一点:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.2</version>
</dependency>
<dependency>
  <groupId>io.jsonwebtoken</groupId>
  <artifactId>jjwt</artifactId>
  <version>0.9.1</version>
</dependency>

数据库表

接下来,我们需要创建数据库表。我们可以使用以下 SQL 语句来做到这一点:

CREATE TABLE users (
  id BIGINT NOT NULL AUTO_INCREMENT,
  username VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL,
  role VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE questionnaires (
  id BIGINT NOT NULL AUTO_INCREMENT,
  title VARCHAR(255) NOT NULL,
  description VARCHAR(255),
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

CREATE TABLE questions (
  id BIGINT NOT NULL AUTO_INCREMENT,
  questionnaire_id BIGINT NOT NULL,
  question VARCHAR(255) NOT NULL,
  type VARCHAR(255) NOT NULL,
  options VARCHAR(255),
  PRIMARY KEY (id),
  FOREIGN KEY (questionnaire_id) REFERENCES questionnaires(id)
);

CREATE TABLE answers (
  id BIGINT NOT NULL AUTO_INCREMENT,
  question_id BIGINT NOT NULL,
  user_id BIGINT NOT NULL,
  answer VARCHAR(255),
  PRIMARY KEY (id),
  FOREIGN KEY (question_id) REFERENCES questions(id),
  FOREIGN KEY (user_id) REFERENCES users(id)
);

Java 代码

接下来,我们需要编写 Java 代码。我们首先需要创建一个 Spring Boot 应用程序类。我们可以通过在项目的 src/main/java 目录下创建一个名为 App.java 的文件来做到这一点。

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

接下来,我们需要创建一个用户控制器。我们可以通过在项目的 src/main/java/com/example/demo/controller 目录下创建一个名为 UserController.java 的文件来做到这一点。

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public User register(@RequestBody User user) {
        return userService.register(user);
    }

    @PostMapping("/login")
    public String login(@RequestBody User user) {
        return userService.login(user);
    }
}

接下来,我们需要创建一个问卷控制器。我们可以通过在项目的 src/main/java/com/example/demo/controller 目录下创建一个名为 QuestionnaireController.java 的文件来做到这一点。

@RestController
@RequestMapping("/questionnaires")
public class QuestionnaireController {
    @Autowired
    private QuestionnaireService questionnaireService;

    @PostMapping
    public Questionnaire create(@RequestBody Questionnaire questionnaire) {
        return questionnaireService.create(questionnaire);
    }

    @GetMapping("/{id}")
    public Questionnaire get(@PathVariable Long id) {
        return questionnaireService.get(id);
    }

    @PutMapping("/{id}")
    public Questionnaire update(@PathVariable Long id, @RequestBody Questionnaire questionnaire) {
        return questionnaireService.update(id, questionnaire);
    }

    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id) {
        questionnaireService.delete(id);
    }
}

接下来,我们需要创建一个问卷分析控制器。我们可以通过在项目的 src/main/java/com/example/demo/controller 目录下创建一个名为 QuestionnaireAnalysisController.java 的文件来做到这一点。

@RestController
@RequestMapping("/questionnaires/analysis")
public class QuestionnaireAnalysisController {
    @Autowired
    private QuestionnaireAnalysisService questionnaireAnalysisService;

    @GetMapping("/{id}")
    public QuestionnaireAnalysis get(@PathVariable Long id) {
        return questionnaireAnalysisService.get(id);
    }
}

部署系统

最后,我们需要部署系统。我们可以通过以下命令来做到这一点:

mvn spring-boot:run

这将启动系统。我们可以通过访问 http://localhost:8080 来访问系统。

结论

在本教程中,我们学习了如何使用 Spring Boot、MyBatis Plus 和 JWT 来构建一个功能齐全的问卷调查系统。我们介绍了如何设置项目、创建数据库表、编写 Java 代码并部署系统。