springboot快速写接口
- 1.建立项目,初步测试接口
- 1. 建proj形式
- 2. 基础包
- 2. 基础依赖
- 3. 配置数据库
- 4.用restcontroller和postmapping来写接口
- 5. 如何使用数据库进行增删改查
- 2. 写一个简单的增删改查
- 2.1 查询
- 报错汇总:
- mybatis的application.yml配置错误
- insert接口无法构造User函数,报500错误
- 知识补充:
- @Transactional
- @PathVariable
- @RequestBody
1.建立项目,初步测试接口
1. 建proj形式
- name会变成文件夹的名字,相当于你的项目名称
2. 基础包
2. 基础依赖
3. 配置数据库
这里要打开mysql,并且创建数据库
方法:
- 安装好数据库,改好账号密码
- 用navicat来建表和账号
- 配置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, ‘zhangsan@example.com’),
(‘李四’, 21, ‘lisi@example.com’),
(‘王五’, 22, ‘wangwu@example.com’),
(‘赵六’, 23, ‘zhaoliu@example.com’),
(‘孙七’, 24, ‘sunqi@example.com’),
(‘周八’, 25, ‘zhouba@example.com’),
(‘吴九’, 26, ‘wujiu@example.com’),
(‘郑十’, 27, ‘zhengshi@example.com’),
(‘陈十一’, 28, ‘chenshiyi@example.com’);
2. 写一个简单的增删改查
2.1 查询
- 按照1.5的步骤来
-
建立实体类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对象类型。这样你就可以直接在方法参数中获取请求体的内容而无需手动解析。