Springboot 3 Starter
:::warning 提示
Starter后缀笔记仅适用于快速上手,且在学习后端前需了解Java SE,MySQL,MyRedis。
:::
:::tip 前言
很荣幸你能来到我的博客参考我的Springboot 3后端速成笔记。以下是Springboot后端的基本架构:
flowchart TD
A[前端] -->|发送请求,提交数据| B(Controller) -->|获取身份,传递数据| C(Service)
-->|校验权限,数据库操作| D(Mapper) -->|发送指令| E(数据库)
:::
1.环境配置
jdk版本:17
开发IDE:IDEA
构建工具:MAVEN
接口测试工具:ApiPost
Maven
我们在使用框架开发时需要使用到别人已经开发好的程序,例如数据库驱动,Springboot基本框架等等。我们称这些软件为“依赖”。所以我们需要一个“管理器”对安装的依赖进行管理。
换源:
<!--`conf/settings.xml`--> <!--在settings.xml中找到<mirrors>标签添加以下子标签--> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
安装依赖
依赖的管理在项目文件根目录下的pom.xml中,只需要找到dependencies标签下将需要安装的依赖标签粘贴进去,再刷线Maven即可。
依赖查询网站:MvnRepository
<!--`pom.xml`--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <version>3.0.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.32</version> </dependency>
2.目录结构
(1).Controller:控制器
i.功能:响应前端发送的请求,负责与前端数据的收发。
ii.书写格式
@Controller @RequestMapping("/api/example") public class ExampleController { @GetMapping("/hello") public String hello() { return "hello"; } //其他控制器接口 }
(2).Enity : 实体类
i.功能:书写设计业务处理对象的类,例如用户类,文章类,订单类
ii.书写格式
@Data //Lombok自动生成 public class 类名 { //TODO 类的具体属性 //TODO 无参构造 //TODO 其他构造 }
:::warning Lombok的注解
使用@Data注解,Lombok会自动为我们生成
所有字段的 getter 方法
所有非 final 字段的 setter 方法
equals()
方法,用于比较对象的相等性hashCode()
方法,用于生成对象的哈希码toString()
方法,用于生成对象的字符串表示:::
(3).Mapper : Mybatis映射
i.功能:书写方法,为程序驱动数据库操作时指定对应的表中的对应的CRUD操作。
ii.书写格式
@Mapper public interface customMapper{ @Select("SELECT * FROM user WHERE username = #{username}") User getUserByUsername(String username); @Insert("INSERT INTO user (username, password, score) VALUES (#{username}, #{password}, #{score})") @Options(useGeneratedKeys = true, keyProperty = "id") int addUser(User user); @Update("UPDATE user SET password = #{password}, score = #{score} WHERE username = #{username}") int updateUser(User user); @Delete("DELETE FROM user WHERE username = #{username}") int deleteUserByUsername(String username); //其他注解接口 }
(4).Service : 服务(接口)及其实现类
i.功能:作为Controller和Mapper之间沟通的桥梁,负责校验数据合法性,用户权限合法性等等。业务处理的大部分逻辑判断都在这儿。
ii.书写格式
public interface customService{ //自定义方法头定义 }
public class customServiceImpl implements customService{ //自定义方法实现 }
3.Application.yml配置
application.yml在默认创建的目录中没有出现,需要修改application.properties后缀为application.yml即可。它是Springboot程序运行前自动读取的配置文件,包括外放端口号,数据库信息,电子邮件配置等等。
#application.yml spring: datasource: url: jdbc:mysql://localhost:3306/tests #jdbc数据库链接 格式为:jdbc:mysql://数据库服务器地址:端口/数据库名 username: root #数据库账号 password: root #数据库密码 driver-class-name: com.mysql.cj.jdbc.Driver #数据库驱动名 #以上是MySQL的驱动配置,更多其他配置大家可在网上查阅
4.RESTFUL
RESTFUL API是一种针对跨设备跨平台前后端开发的一种规范。
以下是一个能够携带状态码返回数据给前端的数据实体类。
@Data public class RestBean<T> { private int status; private boolean success; private T message; public RestBean(int status, boolean success, T message) { this.status = status; this.success = success; this.message = message; } public static <T> RestBean<T> success() { return new RestBean<>(200, true, null); } public static <T> RestBean<T> success(T data) { return new RestBean<>(200, true, data); } public static <T> RestBean<T> failure(int status, T data) { return new RestBean<>(status, false, data); } }
:::tip 状态码
使用适合的状态码很重要,而不应该全部都返回状态码 200
状态码,可根据以下标准按照项目扩展自身状态码:
200~299段 表示操作成功:
- 200 操作成功,正常返回
- 201 操作成功,已经正在处理该请求
300~399段 表示参数方面的异常:
- 300 参数类型错误
- 301 参数格式错误
- 302 参数超出正常取值范围
- 303 token过期
- 304 token无效
400~499段 表示请求地址方面的异常:
400 找不到地址
500~599段 表示内部代码异常:
500 服务器代码异常
请求方式
- 【GET】 /users # 查询用户信息列表
- 【GET】 /users/1001 # 查看某个用户信息
- 【POST】 /users # 新建用户信息
- 【PUT】 /users/1001 # 更新用户信息(全部字段)
- 【PATCH】 /users/1001 # 更新用户信息(部分字段)
- 【DELETE】 /users/1001 # 删除用户信息
- 【PATCH】一般不用,用【PUT】