SpringBoot框架+简单实现增删改查功能

一. 流程分析

  1. 创建工程

    • 创建一个SpringBoot工程
    • 需要勾选Spring WebMyBatis FrameworkMySQL Driver
  2. SpringBoot整合

    • 整合MyBatis
      • 添加Druid数据源依赖
      • 编写数据库配置文件(application.yml),配置数据库连接四要素
      • 对于Dao层的包扫描,使用@Mapper注解
    • 整合Junit
      • 使用@SpringBootTest注解
  3. 功能模块

    • 创建数据库和表
    • 根据数据表来创建对应的模型类
    • 通过Dao层完成数据库的增删改
    • 编写Service层(Service接口+实现类)
    • 编写Controller
      • 接收请求 @RequestMapping@GetMapping@PostMapping@PutMapping@DeleteMapping
      • 接收数据 简单类型、POJO类型、嵌套POJO类型、数组类型、JSON数据类型
        • @RequestParam
        • @PathVariable
        • @RequestBody
      • 转发业务层
        • 使用@Autowired自动装配
      • 响应结果
        • @ResponseBody

二. 代码实现

1.创建工程,添加依赖

(最后一个可以不加)

由于我们在项目中用到了MyBatis-Plus和JSON,我们需要在pom.xml中引入两个依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.49</version>
</dependency>

2.创建数据库,表

3.在IDEA中连接数据库

用户名就是默认的root(如果你没有修改用户名的话)

密码默认123456(我修改了 在这里就填修改后的)

数据库指的是

4.配置yml文件 

圈出来的是需要修改的地方

然后我们运行引导类Application 可以看到运行成功

注意:

  • SpringBoot 在创建项目时,采用jar的打包方式
  • SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目
    因为我们在 pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖通过前面的学习知道它依赖 tomcat ,所以运行 main 方法就可以使用 tomcat 启动工程。
  • SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已。
  • application.properties 文件内容如下:
  • PROPERTIES

    1
    
    server.port=80
    
  • application.yml 文件内容如下:
  • YAML

    1
    2
    
    server:
      port: 81
    
  • application.yaml 文件内容如下:
  • YAML

    1
    2
    
    server:
      port: 82
    
  • 启动服务,在控制台可以看到使用的端口号是 80。说明 application.properties 的优先级最高
  • 注释掉 application.properties 配置文件内容。再次启动服务,在控制台可以看到使用的端口号是 81,说明 application.yml 配置文件为第二优先级。
  • 从上述的验证结果可以确定三种配置文件的优先级是:application.properties > application.yml > application.yaml
  • yaml的优点有:

    • 容易阅读
      • yaml 类型的配置文件比 xml 类型的配置文件更容易阅读,结构更加清晰
    • 容易与脚本语言交互(暂时还体会不到,后面会了解)
    • 以数据为核心,重数据轻格式
      • yaml 更注重数据,而 xml 更注重格式
  • YAML 文件扩展名:

    • .yml (主流)
    • .yaml

补充知识(前情提要)

在一个典型的Java项目中,通常会使用四个层次的架构:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)、持久化层(Persistence Layer)和数据访问层(Data Access Layer)。每个层次都有不同的职责和功能,因此需要使用不同的注解来标识和配置。

以下是对每个层次的常见注解的简要说明:

  1. 表示层(Presentation Layer):负责处理用户界面和用户输入,向用户展示数据和结果。常见的注解包括:
    • @Controller:标识一个类作为控制器,用于处理请求和响应。
    • @RestController:类似于@Controller,但专门用于RESTful风格的接口。
    • @RequestMapping:用于映射请求URL和方法,指定请求的路径和HTTP方法。
    • @RequestParam:用于获取请求参数的值。
    • @ResponseBody:将方法返回的对象作为响应体返回给客户端。
  2. 业务逻辑层(Business Logic Layer):负责实现业务逻辑和业务规则。常见的注解包括:
    • @Service:标识一个类作为服务层组件,用于处理业务逻辑。
    • @Transactional:标识一个方法或类需要进行事务管理。
  3. 持久化层(Persistence Layer):负责与数据库进行交互,进行数据的持久化和访问。常见的注解包括:
    • @Repository:标识一个类作为数据访问层组件,用于访问数据库。
    • @Entity:标识一个类作为持久化实体,在数据库中对应一张表。
    • @Table:用于指定实体类对应的数据库表名。
    • @Column:用于指定实体类属性对应的数据库列名。
    • @Id:用于标识实体类主键属性。
  4. 数据访问层(Data Access Layer):负责具体的数据访问和操作。常见的注解包括:
    • @Mapper:标识一个接口作为映射器(Mapper),用于定义数据库操作的方法。
    • @Select@Insert@Update@Delete等:用于指定SQL映射文件中具体的SQL语句与Java方法的映射关系。

5.创建一个pojo包,StudentPojo类(数据库的映射层)

6.创建dao层

注意要加上@Mapper注解 

@Mapper注解是MyBatis框架中的一个注解,它的作用是将一个Java接口标记为一个映射器(Mapper)。Mapper是用于定义数据库操作的接口,它提供了一组方法来与数据库进行交互,包括插入、更新、删除和查询等操作。

使用@Mapper注解可以告诉MyBatis框架将这个接口与对应的SQL映射文件进行关联。SQL映射文件通常使用XML格式,其中定义了与数据库表相关的SQL语句,通过这些SQL语句可以执行对应的数据库操作。

通过将Java接口与SQL映射文件关联起来,可以方便地使用Java代码调用数据库操作,而无需编写繁琐的SQL语句。MyBatis框架会根据接口的方法名和参数来自动生成对应的SQL语句,并执行数据库操作。

通过使用@Mapper注解,MyBatis框架会自动扫描并解析这个接口,并生成对应的实现类。在实际使用时,我们可以通过依赖注入的方式将UserMapper接口的实例注入到其他类中,然后调用接口中定义的方法来进行数据库操作。

需要注意的是,@Mapper注解通常与MyBatis的其他注解(如@Select、@Insert、@Update、@Delete等)一起使用,用于进一步指定SQL映射文件中具体的SQL语句与Java方法的映射关系。这样可以更加灵活地定义和控制数据库操作。

7.创建Service层

后面的部分截图截不完整 就放到代码块里了

public void updateStudent(int id, String newusername, String newpassword, String newemail){
        StudentPojo studentPojo = studentDao.selectById(id);
        studentPojo.setUsername(newusername);
        studentPojo.setPassword(newpassword);
        studentPojo.setEmail(newemail);
        studentDao.update(studentPojo, new QueryWrapper<StudentPojo>().eq("id",id));
    }

    public void selectStudentById(int id){
        StudentPojo studentPojo = studentDao.selectById(id);
        System.out.println(studentPojo);
    }

    public void selectStudentByUsername(String username){
        List<StudentPojo> selectedStudents = studentDao.selectList(new QueryWrapper<StudentPojo>().like("username",username));
        selectedStudents.forEach(System.out::println);
    }



}

8.创建utils层

该层负责和前端交互,将数据的返回格式均改成JSON格式

utils 层通常是一个项目中用于存放工具类的层级。它是一种常见的软件架构设计模式,将不属于业务逻辑或持久化层的通用功能、工具类或辅助类进行组织和封装。

常见的HTTP状态码和它们的含义如下:

  • 200:成功。表示请求已成功处理。
  • 201:已创建。表示请求已经被成功处理,并且创建了一个新的资源。
  • 400:请求错误。表示服务器无法理解请求的语法。
  • 401:未授权。表示请求需要进行身份验证或授权。
  • 403:禁止访问。表示服务器拒绝请求。
  • 404:未找到。表示服务器找不到请求的资源。
  • 500:服务器错误。表示服务器在执行请求时发生了错误。

 9.创建Controller层

  • @RequestMapping:是一个通用的注解,用于将请求路径和请求方法映射到控制器方法上。
//实现接口
package com.example.learnspringboot.controller;

import com.example.learnspringboot.service.StudentService;
import com.example.learnspringboot.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.websocket.server.PathParam;

@RestController
public class StudentController {

    @Autowired
    StudentService studentService;

    @RequestMapping(value = "/student", method = RequestMethod.POST)//定义了查找的路径和请求方法
    public String addStudent(@RequestParam int id, @RequestParam String username, @RequestParam String password, @RequestParam String email){
        studentService.addStudent(id, username, password, email);
        String resp = Result.okResponse(200, null, "success");
        return resp;
    }

    @RequestMapping(value = "/student", method = RequestMethod.DELETE)//定义了查找的路径和请求方法
    public String deleteStudent(@RequestParam int id){
        studentService.deleteStudent(id);
        String resp = Result.okResponse(200, null, "success");
        return resp;

    }

    @RequestMapping(value = "/student", method = RequestMethod.GET)
    public String selectStudentByUsername(@RequestParam String username){
        studentService.selectStudentByUsername(username);
        String resp = Result.okResponse(200, null, "success");
        return resp;
    }

@RequestMapping(value = "/student/{id}", method = RequestMethod.GET)
public String getStudentById(@PathVariable("id") int id) {
    studentService.selectStudentById(id);
    String resp = Result.okResponse(200, null, "success");
    return resp;
}

    @RequestMapping(value = "/student", method = RequestMethod.PUT)
    public String updateStudent(@PathParam("id") int id, @RequestParam String username, @RequestParam String password,@RequestParam String email){
         studentService.updateStudent(id, username, password, password);
         String resp = Result.okResponse(200, null, "success");
         return resp;
    }



}

10.发送Postman

 

搞错了 再来 增加数据是POST请求

 然后我们可以看到数据库成功增加了数据

 改

先用username查

可见控制台已成功获取到了数据

然后我们用id查

注意一个细节

@RequestParam 注解用于从请求参数中获取参数值,而 @PathVariable 注解用于从路径中获取参数值。

使用 @RequestParam 注解获取参数时,客户端可以将参数作为查询参数发送,例如:/student?username=johndoe

相比之下,当使用 @PathVariable 注解时,参数值需要作为路径的一部分发送,例如:/student/johndoe

@PathParam:用于从请求路径中获取路径参数的值。在 JAX-RS 中使用,可以通过 @PathParam 注解将路径参数与方法的参数进行绑定。例如,/student/{id} 中的 id 可以通过 @PathParam 注解获取。所以这个在SpringMVC中不使用!

  • 27
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot和EasyUI是两个常用的Java Web开发框架Spring Boot提供了一种快速构建生产级Web应用的方式,而EasyUI则是一个轻量级的前端UI库,常用于简化前端开发,特别是表格操作和数据管理。 要使用Spring Boot和EasyUI实现增删改查(CRUD)操作,你可以按照以下步骤进行: 1. **添加依赖**: - 在Spring Boot项目中,添加EasyUI的依赖到你的pom.xml文件或build.gradle文件中。 - 对于Maven,添加EasyUI UI Grid的依赖: ```xml <dependency> <groupId>com.jeeplus</groupId> <artifactId>easyui</artifactId> <version>1.3.5</version> </dependency> ``` - 或者对于Gradle: ```groovy implementation 'com.jeeplus:easyui:1.3.5' ``` 2. **创建控制器**: 创建一个控制器类,继承自Spring的`RestController`,用来处理HTTP请求。例如: ```java @RestController public class MyController { @Autowired private YourService yourService; // 假设YourService负责数据库操作 @GetMapping("/list") public List<YourEntity> getList() { return yourService.getAll(); } // ...其他方法如@PostMapping("add"), @PutMapping, @DeleteMapping等,对应增删改查操作 } ``` `YourService`是你自定义的服务类,包含数据库操作的方法。 3. **编写服务接口和实现**: - 定义一个接口,比如`YourService`,包含CRUD方法的声明。 - 实现这个接口,使用JPA、MyBatis或其他ORM工具进行数据库交互。 4. **前端页面**: - 使用EasyUI的`datagrid`组件展示数据列表。在HTML模板中引用EasyUI样式和JS库,并调用后端API获取数据。 - 使用`form`组件来创建表单,处理用户输入的数据,例如: ```html <table id="dg" title="表格"></table> <form id="form" method="post" action="{:U('yourController', 'add')}" enctype="multipart/form-data"> <!-- 表单元素 --> </form> ``` 5. **Ajax调用**: 利用EasyUI提供的内置Ajax功能,处理数据的增删改操作。例如,点击按钮时,通过JavaScript发起POST或PUT请求。 6. **错误处理和响应**: 确保后端对每个HTTP操作返回合适的HTTP状态码和JSON响应,前端可以根据这些信息更新界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值