SpringBoot各模块逻辑

SpringBoot各模块逻辑

pojo

pojo 将实际对应mysql数据库中各个表,转为对应的 Class

这里我们借助了 lombok 这个依赖(已在pom.xml中添加)。

Lombok,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,你的类就有一个功能齐全的构建器、自动记录变量等等(但要注意有些个性化的构造函数还是要自己写)

关于有参无参,若不使用lombok依赖,则以前构造无参、有参的函数挺麻烦的,这里记录了未使用lombok时的构造方法:Java后端开发教程

pojo.User类的代码(写好运行一次后,可在target里看到编译后的User类代码中实现了各种之前需要手动编写的代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.lwd.backend.pojo;

// 不用再手写Getter,Setter,equals,canEqual, hasCode,toString等方法,注解后在编译时会自动加进去
import lombok.Data;
// 创建一个无参构造函数
import lombok.NoArgsConstructor;
// 添加一个构造函数,该构造函数含有所有已声明字段属性参数
import lombok.AllArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private String password;

//剩余还有很多构造函数需要自己写,例如用户若只提供username,password,这样既不是无参也不是全参
public User(String username, String password) {
this.username = username;
this.password = password;
}
}

mapper

mapper 层(也叫Dao层):将 pojo 层的 Class 中的操作,映射为 sql 语句

本项目使用的是 mybatis-plus 来对数据库进行操作,相比原先的 mybatis 要简单快捷了很多,只需要在pom.xml导入对应的依赖即可。

mapper.UserMapper类的代码

1
2
3
4
5
6
7
8
9
10
package com.lwd.backend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lwd.backend.pojo.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

controller

controller 层:负责请求转发,接受页面过来的参数,并将其传到 service 层处理;接到返回值,再传给页面。

一般网站有几个大模块,就在controller层添加几个软件包,每个软件包里可以有多个控制类

例如上图,网站的大模块有 pk ranklist record user 共四个。 而在 pk 模块中,可以有两个小页面 BotInfoIndex,那我们就在该模块下,分别创建 BotInfoControllerIndexControler 两个控制类,来分别两个小页面的数据请求和数据返回。

1
2
3
4
5
6
@RequestMapping //会将前端所有的请求(get、post等)映射过来
@GetMapping //只接受前端的get请求
@PostMapping //只接受前端的post请求

Mapping后的url中的 / 最后是前加后不加
....其他的以此类推

目前为了简化流程,先将controller层和service层合并,将service层的内容直接在controller层中完成。例如下面的数据库查询等操作,最终实现项目时应放将其放到service层中。

controller.user.UserController类中多个不同作用的代码段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RestController
//@RestController注解其实就是将 return 中的内容以 JSON字符串的形式返回客户端
public class UserController {

@Autowired
UserMapper userMapper; // 使用mapper层的UserMapper类,声明一个userMapper对象
// 如果controller涉及数据库的操作,则需要的先用@Autowired将mapper注入后,才能使用


@GetMapping("/user/all") //完整的url: http://127.0.0.1:3000/user/all
public List<User> getAll() { //getAll() 函数名可以自己取
return userMapper.selectList(null);
// 因为UserMapper类继承了mybatisplus,所以这里声明的userMapper对象,
// 拥有mybatisplus的数据库各种增删改查的操作
// 所以,通过userMapper对象,使用selectList方法查找数据库返回一个内容类型为User的List列表
}
}
1
2
3
4
5
@GetMapping("/user/{userId}") // {}可以提取前端url传来的参数
public User getuser(@PathVariable int userId) {
// @PathVariable可以将参数取出并传入函数getuser,这样便将userId传给selectById()命令
return userMapper.selectById(userId);
}

CRUD 接口 | MyBatis-Plus (baomidou.com)

大佬写的MyBatis-Plus教程 以及对应的typora源文件MyBatis-Plus-Md版笔记.zip - 蓝奏云

在UserController类中,出现了数据库查询操作,例如selectList,上述网址可以用来查询和学习其他增删改查具体的命令