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 JDBC
Project Lombok
MySQL Connector/J
mybatis-plus-boot-starter
mybatis-plus-generator
spring-boot-starter-security
jjwt-api
jjwt-impl
jjwt-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
中的class
mapper
层(也叫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