Spring Boot起步,CRUD、错误处理与宝塔部署

238 阅读5分钟

新建一个Spring Boot项目

这里使用的idea编辑器。快速生成java 项目。

生成项目目录

java-app: 项目的根目录。
.idea: IntelliJ IDEA 的项目配置文件夹。
.mvn: Maven 的相关配置。
src: 源代码目录。
main: 主代码部分。
java: Java 源代码文件夹。
com: 包名的顶层目录。
example: 示例包。
javaapp: 项目特定的包。
JavaAppApplication.java: 主应用程序类。
resources: 资源文件夹。
static: 静态资源(如 CSS、JS 文件)。
templates: 模板文件。
application.properties: 配置文件。
test: 测试代码部分。
java: 测试 Java 源代码文件夹。
com: 包名的顶层目录。
example: 示例包。
javaapp: 项目特定的包。
JavaAppApplicationTests.java: 测试类。
.gitignore: Git 忽略文件。
HELP.md: 项目帮助文档。
mvnw: Maven Wrapper 脚本。
mvnw.cmd: Windows 下的 Maven Wrapper 脚本。
pom.xml: Maven 项目的配置文件。

主程序代码

package com.example.javaapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类
@SpringBootApplication
public class JavaAppApplication {

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

}
  1. 包声明:
package com.example.javaapp;

这行代码定义了类所在的包,通常用于组织类和避免命名冲突。
2. 导入语句:

import org.springframework.boot.SpringApplication;
   import org.springframework.boot.autoconfigure.SpringBootApplication;

这些导入语句引入了 Spring Boot 的核心类。SpringApplication 用于启动应用程序,@SpringBootApplication 是一个组合注解,包含了多个功能(如自动配置、组件扫描等)。
主类:
这是应用程序的主类,使用 @SpringBootApplication 注解标记,表示这是一个 Spring Boot 应用。
主方法:

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

main 方法是 Java 应用程序的入口点。SpringApplication.run 方法启动 Spring 应用程序,传入当前类和命令行参数。
整体上,这段代码定义了一个简单的 Spring Boot 应用程序的启动结构。

添加mySql数据库信息

server.port=8080

spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=springboot
spring.datasource.password=springboot

启动第一个程序

报错了

解决报错,缺少了MySql依赖项

pom.xml添加mysql依赖配置

<dependency>
            <groupId>com.mysql</groupId>

            <artifactId>mysql-connector-j</artifactId>

            <version>8.0.31</version>

            <scope>runtime</scope>

</dependency>

报错信息消失

开始启动

重新启动项目

编写第一个接口

在同级目录下面建立一个controller文件夹。然后建立一个 JavaAppController.java 文件的控制器。

定义RESTful API控制器

引入

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
  1. import org.springframework.web.bind.annotation.GetMapping;:导入GetMapping注解,这个注解用于处理HTTP GET请求。它可以将一个方法映射到特定的URL路径。
  2. import org.springframework.web.bind.annotation.RestController;:导入RestController注解,这个注解用于标识一个类为RESTful控制器。它的作用是将控制器中的每个方法的返回值直接作为HTTP响应体返回,而不是返回一个视图。
    结合起来,这段代码通常出现在一个Spring Boot应用中,用于定义一个处理GET请求的RESTful API控制器。
package com.example.javaapp.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class JavaAppController {
    @GetMapping("/test")
     public String test() {
        return "hello java";
    }
}

启用Spring MVC的Web功能

这里的含义是使用mvc模板绑定html模板,绑定数据层。如果是这种方式,则需要开启mvc的web功能

package com.example.javaapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
@EnableWebMvc
public class JavaAppApplication {

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

}

MVC模式示例

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class EmployeeController {

    @GetMapping("/employees")
    public String getEmployees(Model model) {
        // 假设我们有一个员工列表
        List<Employee> employees = fetchEmployees();
        
        // 将员工列表添加到模型中
        model.addAttribute("employees", employees);
        
        // 返回视图名称
        return "employeeList"; // 视图名称
    }
}

我这里没有使用这样方式

定义实体类

定义一个实体类,用于表示任务表的字段

package com.example.javaapp.entity;
import lombok.Data;
// 导入Lombok:import lombok.Data; 导入Lombok库中的@Data注解。Lombok是一个Java库,用于减少样板代码
// @Data注解:这个注解自动生成以下内容:
// 所有字段的getter和setter方法。
// toString()方法,方便打印对象信息。
// equals()和hashCode()方法,便于比较对象。
@Data
public class JavaApp {
    private String name;
    private String code;
}

添加lombok依赖项

    <dependency>
            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <version>1.18.24</version> <!-- 使用最新版本 -->
            <scope>provided</scope>

        </dependency>

报错,原因是我还没建表

建数据表

继续报错

该模式需要建立 list.html绑定数据

也就是刚才说的那种模式,则需要这种方式。

修改模式为RestController注解模式

package com.example.javaapp.controller;

// import org.springframework.stereotype.Controller;
// import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;

import com.example.javaapp.entity.Employee;
import com.example.javaapp.repository.JavaAppDAO;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
@RequestMapping("/web")
public class JavaAppController {
    private final JavaAppDAO javaAppDAO;
    public JavaAppController(JavaAppDAO javaAppDAO) {
        this.javaAppDAO = javaAppDAO;
    }
    @GetMapping("/list")
     public List<Employee> listEmployees() {
        return javaAppDAO.getAllEmployees();
    }
}

重启应用,查询接口

编写新增接口

@PostMapping("/add")
    public String addEmployee(@RequestBody Employee employee) {
        javaAppDAO.createEmployee(employee.getName(), employee.getCode()); // 调用服务层方法添加员工
        return "员工添加成功"; // 返回成功消息
}

处理报错

数据表有多余的字段,删除即可

新增接口编写完成

编写修改接口

    @PutMapping("/update/{id}")
    public String updateEmployeed(@PathVariable String id, @RequestBody Employee employee) {
        javaAppDAO.updateEmployee(id, employee.getName(), employee.getCode()); // 调用服务层方法更新员工
        return "员工更新成功"; // 返回成功消息
    }

测试接口

编写删除接口

    //删除接口
    @DeleteMapping("/delete/{id}")
    public String deleteEmployeed(@PathVariable String id) {
        javaAppDAO.deleteEmployee(id); 
        return "员工删除成功"; 
    }

报错 java: 错误: 不支持发行版本 5

版本不一致导致修改版本一致即可

1. 查看 -文件-项目结构-项目设置-项目

查看settings里面的java Compiler

文件-设置

去File里找Settings打开,在打开的页面中找到Build开头的那一串,接着找它下面Compiler下的java compiler,

修改到对应的版本,然后应用保存就可以关闭了。

重新运行代码.

程序包org.springframework.stereotype 不存在——解决办法

1.File—>Settings----->Build,Execution,Deployment——>Maven——>Runner——>选择Delegate IDE,选择自己安装的JRE的路径

springboot打包jar

先设置:点击 File ==> Project Structure ==> Artifacts ==> 点击加号 ==> 选择JAR ==> 选择From modules with dependencies

开始打包

打包完成

打完了以后,就会出现jar的包

宝塔部署jar包

宝塔配置java jdk的环境

上传jar包到服务器目录

生成端口信息,配置端口放行

配置端口代理的域名

浏览器打开:v3.kestrel-task.cn/employee/li… 即可看到界面