SpringBoot框架之KOB项目 - 配置Mysql与注册登录模块(上)
框架模型
每一个客户端(client)都会和后端(SpringBoot)进行通信,例如如果一个用户进行登录,需要向后端发送username、password,SpringBoot可以理解为一个一直在跑的程序,不断对用户发送的请求进行一个响应,将一些需要需要存储的数据通过mysq存储到硬盘或者内存,数据库可以类比为数组。

Mysql的安装
原先Mysql5的卸载
这里用的是Mysql8,如果已经安装了Mysql5的话,可以参考这个视频,干净的卸载Mysql5视频链接
Mysql8的安装
参考博客链接
验证安装,如下所示,则安装成功

执行mysql -uroot -p回车进行输入密码

mysql的常见操作
配置环境变量
如果想在任何目录下打开mysql,有这个需求,就可以配置环境变量
将C:\Program Files\MySQL\MySQL Server 8.0\bin(如果安装到了其他目录,填写相应目录的地址即可)添加到环境变量PATH中,这样就可以在任意目录的终端中执行mysql命令了。
mysql服务的关闭和启动
开机默认启动,如果想要手动操作可以使用如下命令
- 关闭:
net stop mysql80 - 开启:
net start mysql80
常见的sql指令
- 连接用户名
root,密码为123456的数据库服务:mysql -uroot -p123456 show databases;:列出所有的数据库create database kob;:创建数据库drop database kob;:删除数据库use kob;:使用数据库show tables;列出当前数据库的所有表create table user values(id int, username varchar(100), password varchar(100));:创建名称为user的表,表中包含id、username和password三个属性drop table user;:删除表insert into user values(1, 'hxw', 'phxw'):在表中插入数据select * from user;:查询表中所有的数据delect from user where id = 2: 删除某行数据
mysql的结构
mysql中有多个数据库,每个数据库中有多个表

用户登录的实现
其实就是根据用户名,从数据库中找到对应的密码,看和用户输入的密码是否匹配。
进入idea进行相关配置
idea可以作为Mysql的图形化工具,配置步骤如下

输入用户名和密码,如果提示要安装驱动的话,点击安装即可。

有了这个图形化工具,就不用手写sql语句了。
例如给表添加一行,可以点击添加按钮=,然后输入相关内容,然后进行提交。类似的可以进行其他操作。

使用数据库所需要的依赖配置
Maven仓库地址:需要的依赖在这里进行搜索,点击对应的版本,将依赖添加到pom.xml文件中
在pom.xml文件中添加依赖:
Spring Boot Starter JDBCProject LombokMySQL Connector/Jmybatis-plus-boot-startermybatis-plus-generatorspring-boot-starter-securityjjwt-apijjwt-impljjwt-jackson
在application.properties中添加数据库配置:
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/kob?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
SpringBoot中常用的模块:
pojo层:将数据库中的表对应成java中的classmapper层(也叫DAO层):将pojo层中class中的操作映射成sql语句service层:写具体的业务逻辑,组合使用mapper中的操作controller层(调度Service):负责请求转发,接受页面过来的参数,传给service处理,接到返回值,再传递给页面

编写Controller层的代码
在Spring Boot框架中,Controller是用于处理HTTP请求和响应的核心组件。它的作用主要包括以下几个方面:
-
请求映射:Controller中的方法通常通过注解(如
@RequestMapping、@GetMapping、@PostMapping等)来映射特定的HTTP请求到对应的处理方法。 -
参数处理:Controller可以接收来自HTTP请求的参数,如URL参数、表单数据、JSON数据等,并通过注解(如
@RequestParam、@RequestBody)来绑定这些参数到方法的参数上。 -
业务逻辑调用:Controller作为请求处理的入口,会调用Service层或Repository层的业务逻辑代码,处理具体的业务需求。
-
响应生成:Controller负责生成HTTP响应,它可以返回各种类型的响应,如JSON、XML、HTML页面等。通常使用
@ResponseBody注解或返回ResponseEntity对象来实现。 -
异常处理:Controller可以处理请求处理过程中发生的异常,并通过注解(如
@ExceptionHandler)或全局异常处理器来返回相应的错误响应。 -
数据转换:Controller可以将业务逻辑处理的结果转换为客户端需要的数据格式,如将对象转换为JSON格式。
-
安全性控制:Controller可以集成安全性控制,如通过注解(如
@PreAuthorize)来控制访问权限。 -
国际化:Controller可以处理国际化相关的请求,返回不同语言的响应。
-
模板渲染:在一些使用模板引擎(如Thymeleaf)的项目中,Controller还可以负责将模型数据传递给视图模板,并渲染最终的页面。
总的来说,Controller在Spring Boot中扮演着处理HTTP请求和生成HTTP响应的角色,它是MVC(Model-View-Controller)模式中的“C”部分,负责协调模型、视图和控制器之间的交互。

@requestController注解
@getMapping注解
编写pojo层代码
lombok的使用
Lombok是一个Java库,它通过注解的方式简化了Java代码的编写,特别是在减少样板代码(如getter和setter方法、构造函数、toString方法等)的编写上非常有用。@Data是Lombok提供的一个非常强大的注解,它是一个组合注解,用于自动生成标准的getter和setter方法、toString方法、equals和hashCode方法以及一个无参构造函数。
当你在一个类上使用@Data注解时,Lombok会自动为你的类生成以下内容:
-
Getter和Setter方法:为类中的所有字段生成getter和setter方法。如果字段是
final的,只会生成getter方法。 -
toString方法:生成一个包含所有字段的toString方法。 -
equals和hashCode方法:生成基于所有字段的equals和hashCode方法。 -
无参构造函数:生成一个无参构造函数,即使类中有其他构造函数存在。
-
final字段的构造器:如果类中有final字段,Lombok会为这些字段生成一个包含所有final字段的构造器。
使用@Data注解的示例:
import lombok.Data;@Data
public class Person {private String name;private int age;private String email;
}
在这个例子中,Lombok会自动为Person类生成以下方法:
getName(),setName(String name)getAge(),setAge(int age)getEmail(),setEmail(String email)Person()(无参构造函数)Person(String name, int age, String email)(包含所有final字段的构造函数)toString(),equals(Object o),hashCode()
使用@Data注解可以显著减少模板代码的编写,让开发者更专注于业务逻辑的实现。不过,需要注意的是,使用Lombok时,IDE需要安装相应的插件,以便能够识别和正确处理Lombok注解。
编写mapper模块的代码
@mapper注解
@Mapper 注解被用在了一个接口 UserMapper 上,这个接口继承了 BaseMapper<User>。这种用法通常与 MyBatis 框架结合使用,特别是在使用 MyBatis-Plus 或类似的扩展库时。
在 MyBatis-Plus 中,BaseMapper 是一个提供了常见 CRUD 操作的通用 Mapper 接口。当你的 UserMapper 接口继承了 BaseMapper<User>,它就继承了这些基本的 CRUD 方法,例如插入(insert)、查询(select)、更新(update)和删除(delete)等。
这里的 @Mapper 注解的作用是告诉 MyBatis 框架,这个接口是一个 Mapper 接口,框架应该为其创建一个代理实现。在 Spring 环境中,这个接口通常会被自动检测到,并将其实现作为一个 Bean 注入到 Spring 容器中,从而可以使用 Spring 的 @Autowired 注解来注入这个 Mapper 并使用其方法。
例如,你可以在 Service 层中注入 UserMapper 并调用其方法:
@Service
public class UserService {private final UserMapper userMapper;@Autowiredpublic UserService(UserMapper userMapper) {this.userMapper = userMapper;}public User getUserById(Integer id) {return userMapper.selectById(id);}// 其他业务方法...
}
在这个例子中,UserService 通过构造函数注入了 UserMapper,然后可以使用 selectById 方法来查询用户信息。selectById 是 BaseMapper 接口提供的方法之一。
需要注意的是,@Mapper 注解并不是 MyBatis 或 Spring 框架的一部分,而是 MyBatis-Spring 集成库提供的注解。如果你在使用纯 MyBatis 而不使用 Spring,你可能需要使用 MyBatis 的 @MapperScan 注解来扫描 Mapper 接口。如果你在使用 Spring Boot,通常会自动配置 MyBatis,无需额外的注解来扫描 Mapper 接口。
总而言之,用了这个注解,计算机能够特别的看待这个接口,接口继承了BaseMapper,可以实现对数据库的增删改查操作
56min
