Bootstrap

springboot快速写增删改查接口

1.建立项目,初步测试接口

1. 建proj形式

  • name会变成文件夹的名字,相当于你的项目名称
    prinb

2. 基础包

在这里插入图片描述

2. 基础依赖

在这里插入图片描述

3. 配置数据库

这里要打开mysql,并且创建数据库
方法:

  1. 安装好数据库,改好账号密码
  2. 用navicat来建表和账号
  3. 配置properties.yml文件即可

4.用restcontroller和postmapping来写接口

1.建文件夹
2.建controller类
3.添加两个注解
4.返回需要的数据–string,或者直接是一个类也行
– 4.1 类可以另写一个文件,并用alt+insert的形式设置构造函数,和getter,setter
在这里插入图片描述

效果:
在这里插入图片描述

5. 如何使用数据库进行增删改查

在这里插入图片描述
注释:

  • 实体类为entity,在前后端JSON格式传输的时候会实例化实体
  • 增删改查叫做mapper,写mapper接口和xml文件就是将接口的这个函数和SQL查询语句对应起来
  • service是用于写一些计算相关的业务逻辑
  • controller就是api接口,用requestmapping注解来暴露接口,然后然会给接口需要的东西

– 创建表
CREATE TABLE user (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

– 插入数据
INSERT INTO user (name, age, email) VALUES
(‘张三’, 20, ‘[email protected]’),
(‘李四’, 21, ‘[email protected]’),
(‘王五’, 22, ‘[email protected]’),
(‘赵六’, 23, ‘[email protected]’),
(‘孙七’, 24, ‘[email protected]’),
(‘周八’, 25, ‘[email protected]’),
(‘吴九’, 26, ‘[email protected]’),
(‘郑十’, 27, ‘[email protected]’),
(‘陈十一’, 28, ‘[email protected]’);

2. 写一个简单的增删改查

2.1 查询

  • 按照1.5的步骤来
  1. 建立实体类User,并且给出constructor,getter,setter

报错汇总:

mybatis的application.yml配置错误

在这里插入图片描述
写成了mapping/*.xml,系统会出现无法连接数据库的异常报错

insert接口无法构造User函数,报500错误

报错了:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.learn1.demo.entity.User]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.learn1.demo.entity.User (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 2, column: 3]] with root cause

原因: User的无参constructor没有写。。。补上就行
在这里插入图片描述

知识补充:

@Transactional

用于声明事务的边界,它可以应用在方法级别或类级别。在 deleteUserById 方法中使用 @Transactional 有以下好处:

  • 事务管理: @Transactional 会将该方法包装在一个数据库事务中。如果在方法执行过程中发生了异常,事务将被回滚,从而保持数据库的一致性。

  • 避免不一致的状态: 当删除一个用户的同时还需要更新其他相关的信息时,你可能需要多个数据库操作,比如删除用户和删除相关的关联数据。使用 @Transactional 可以确保这些操作要么全部成功,要么全部失败。

  • 自动提交: 在 Spring Boot 中,默认情况下,每个 @Transactional 方法执行完成后都会提交事务。所以,当删除用户完成时,数据库的变更将被提交。

@PathVariable

是Spring框架中用于从URL模板中提取变量值的注解。它通常用于在控制器方法中获取由URI模板中的占位符表示的变量。

在Spring MVC中,我们可以使用@PathVariable注解将URL中的模板变量映射到方法的参数上。这使得我们能够在处理HTTP请求时访问URI模板中的动态变量。

@RequestBody

是Spring框架中用于从HTTP请求体中提取数据的注解。它通常用于处理POST请求,将请求体中的JSON、XML等格式的数据绑定到方法的参数上。

当你使用@RequestBody注解时,Spring会尝试将请求体的内容转换为指定的Java对象类型。这样你就可以直接在方法参数中获取请求体的内容而无需手动解析。

;