当前位置: 首页 > news >正文

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的表,表中包含idusernamepassword三个属性
  • 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处理,接到返回值,再传递给页面
    SpringBoot以及Django的对比

编写Controller层的代码

在Spring Boot框架中,Controller是用于处理HTTP请求和响应的核心组件。它的作用主要包括以下几个方面:

  1. 请求映射:Controller中的方法通常通过注解(如@RequestMapping@GetMapping@PostMapping等)来映射特定的HTTP请求到对应的处理方法。

  2. 参数处理:Controller可以接收来自HTTP请求的参数,如URL参数、表单数据、JSON数据等,并通过注解(如@RequestParam@RequestBody)来绑定这些参数到方法的参数上。

  3. 业务逻辑调用:Controller作为请求处理的入口,会调用Service层或Repository层的业务逻辑代码,处理具体的业务需求。

  4. 响应生成:Controller负责生成HTTP响应,它可以返回各种类型的响应,如JSON、XML、HTML页面等。通常使用@ResponseBody注解或返回ResponseEntity对象来实现。

  5. 异常处理:Controller可以处理请求处理过程中发生的异常,并通过注解(如@ExceptionHandler)或全局异常处理器来返回相应的错误响应。

  6. 数据转换:Controller可以将业务逻辑处理的结果转换为客户端需要的数据格式,如将对象转换为JSON格式。

  7. 安全性控制:Controller可以集成安全性控制,如通过注解(如@PreAuthorize)来控制访问权限。

  8. 国际化:Controller可以处理国际化相关的请求,返回不同语言的响应。

  9. 模板渲染:在一些使用模板引擎(如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方法、equalshashCode方法以及一个无参构造函数。

当你在一个类上使用@Data注解时,Lombok会自动为你的类生成以下内容:

  1. Getter和Setter方法:为类中的所有字段生成getter和setter方法。如果字段是final的,只会生成getter方法。

  2. toString方法:生成一个包含所有字段的toString方法。

  3. equalshashCode方法:生成基于所有字段的equalshashCode方法。

  4. 无参构造函数:生成一个无参构造函数,即使类中有其他构造函数存在。

  5. 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 方法来查询用户信息。selectByIdBaseMapper 接口提供的方法之一。

需要注意的是,@Mapper 注解并不是 MyBatis 或 Spring 框架的一部分,而是 MyBatis-Spring 集成库提供的注解。如果你在使用纯 MyBatis 而不使用 Spring,你可能需要使用 MyBatis 的 @MapperScan 注解来扫描 Mapper 接口。如果你在使用 Spring Boot,通常会自动配置 MyBatis,无需额外的注解来扫描 Mapper 接口。

总而言之,用了这个注解,计算机能够特别的看待这个接口,接口继承了BaseMapper,可以实现对数据库的增删改查操作

56min


http://www.mrgr.cn/news/29303.html

相关文章:

  • 【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作
  • Kafka基础知识学习
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • python cachetools 快速入门
  • Leetcode 3352. Count K-Reducible Numbers Less Than N
  • C++组合复用中,委托的含义与作用
  • 32%代码由AI生成!工行智能研发辅助系统大揭秘
  • Docker vs. containerd 深度剖析容器运行时
  • 合宙Air201模组LuatOS扩展功能:温湿度传感器篇!
  • 宗教哲学(Philosophy of Religion)
  • 后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0918)
  • 从openAI最新模型GPT-o1再谈思维链(Cot)技术,大模型该怎么提升其逻辑推理能力?
  • 突发!又一家新势力「智驾」系统被召回调查,谁来兜底安全?
  • 在Android中fragment的生命周期
  • (黑马点评)二、短信登录功能实现
  • 人工智能(AI)的影响下人类的生活样子
  • 听劝!千万别让外贸信息差害惨你!
  • 汉字排序(拼音排序)
  • DORIS - DORIS之BloomFilter索引
  • C++速通LeetCode简单第17题-爬楼梯(全网最简单)
  • 旺店通ERP集成用友U9(用友U9主供应链)
  • SC01芯片:触摸感应、人体感应、液位检测三合一的高性能解决方案
  • Anaconda 安装
  • leetcode438找到字符串种所有异位词
  • 高级java每日一道面试题-2024年9月15日-架构篇[分布式篇]-如何在分布式系统中实现事务?
  • Linux容器化管理——Docker常见命令总结