技术栈 : Spring
Mysql
躺在床上怎么也不安定
今天一天用到的新玩意太多了,感觉不了解一下到后面不好受
一般来说只有一个后端即(Springboot)
而一个后端服务多个Client
较为常见的是 :
每个用户会给服务器传送用户名和密码
而对于这些用户信息的存放我们采用数据库存放
Mysql安装过程不在介绍
0. 启动服务
我们在安装并且配置好Mysql环境变量的之后
我们需要先使用
net start mysql80
启动服务
当然我们也可以使用
net stop mysql80
进行关闭服务
(至于需不需要手动关闭,这里我不清楚)
1.基本命令
我们通过mysql -u root -p
之后输入密码,进行登录本地的数据库
进入数据库最大的变化就是命令行变为
mysql>
下面是基本命令的介绍 :
注意每个命令之后都需要紧跟着一个;
show databases;
:列出所有数据库
create database kob;
:创建数据库
drop database kob;
:删除数据库
use kob;
:使用数据库kob
show tables;
:列出当前数据库的所有表
create table user(id int, username varchar(100))
:创建名称为user的表,表中包含id
和username
两个属性。
drop table user;
:删除表
insert into user values(1, 'yxc');
:在表中插入数据
select * from user;
:查询表中所有数据
delete from user where id = 2;
:删除某行数据
(因为我们可以通过IDEA可视化的操作数据库,所以我们这里直接CV讲义)
因为Mysql
是关系型数据库,通俗的来说就是一个二维表所以其结构非常好懂
数据库1
表1
属性1 属性2
行1 列1...
行2 列2...
行3 列3....
表2
表3
数据库2
....
0.基本操作
通过IDEA直接链接我们的本地数据库,填入相关的账号和密码以及需要使用的数据库之后,直接应用即可
通过可视化界面,我们可以完成最基础的加一行和加一列操作
(其他操作就不一一列出了)
2.配置相关依赖
Spring Boot Starter JDBC
dataSource
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
<version>2.7.1version>
dependency>
Project Lombok
这个东西是一个懒人工具,没记错图标是一个小辣椒
(知乎上面 正反五五开)
对于以前我么需要手写或者自动生成的get,set,tostring
方法
在安装了这个之后都可以直接使用@Data
的注解进行简化
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.24version>
<scope>providedscope>
dependency>
MySQL Connector/J
这是一个MySQL的JDBC驱动
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.29version>
dependency>
mybatis-plus-boot-starter
这是Mybatis -plus,只学过Mybatis,plus还没学不清楚是什么
之前学Mybatis的时候一直在写xml文件管理SQL
语句
但是看y总用plus没写过xml可能优化了这点
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.2version>
dependency>
mybatis-plus-generator
这个不清楚百度到是代码生成器(第一次用)
y总说会自动生成一些函数
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.29version>
dependency>
3.配置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
pojo层 :
这里是将数据库中属性对应到Java
的类中
mapper/Dao层 :
这个层是对pojo
或者对数据库中的一张表的CRUD
进行封装。没记错的话,SSM
中Dao
层都是接口,即只做原子操作,不考虑如何实现一个功能
service层 :
对多个Dao
进行封装,也就是通过多个Dao
实现具体的一个功能
serviceImpl层 :
这个是service
接口的实现类,给controller
层使用
Controller层 :
请求转发实现页面跳转(上节课的内容)
显然我们根据数据库中的表进行对应我们可以得到
一个User
类包含id,username,password
即数据库中的属性对应到Java中
@Data //小辣椒 简化了get set tostring
@NoArgsConstructor//无参构造
@AllArgsConstructor//有参构造 显然这两个市成对出现的
public class User {
private Integer id;
private String username;
private String password;
}
一个表对应一个DAO
BaseMapper
是Mybatis-plus通用CRUD封装接口
即里面封装了很多CRUD
的操作
(如果是Mybatis的话得手写QAQ)
[了解更多点击这里]
@Mapper
这个是Mybatis对接口层的一个注解,没有这个的话我们还需要写一个xml
然后让Spring去扫描这个地址
(少走几十年弯路)
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@RestController
为什么这里不是Controller
而是RestController
查了一些博客之后,发现RestController
会使得方法返回不再是跳转页面了,即不在返回jsp,html
页面
@GetMapping(“/user/{userId}/
这种写法会将第二个输入的东西变为userId
变为己用
@RestController
public class UserController {
@Autowired //完成自动装配
UserMapper userMapper;
@GetMapping("/user/all")//请求映射
public List<User> getAll(){
return userMapper.selectList(null);
}
@GetMapping("/user/{userID}/")
public User getUser(@PathVariable int userId){
return userMapper.selectById(null);
}
@GetMapping("/user/add/{userId}/{username}/{password}/")
public String addUser(@PathVariable int userId,@PathVariable String username,@PathVariable String password){
User user = new User(userId,username,password);
userMapper.insert(user);
return "Add user successfully";
}
@GetMapping("/user/delete/{userId}/")
public String deleteUser(@PathVariable int userId){
userMapper.deleteById(userId);
return "dele successfully";
}
}
Spring Security
安装这个我安装高版本会报错,所以这里安装了一个低版本的
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-securityartifactId>
<version>2.6.9version>
dependency>
小插曲 :
这里balabala了一堆下节课的东西,说以前判断是用Session判断,但是Session存在跨域问题,所以我们现在 使用 token判断。(反正也听不懂,小插曲)
安装好这个依赖之后,我们再次启动服务就会发现需要登录了
然后我们就寄了,这里可能是因为Spring版本的问题或者是因为依赖版本的问题
导致输入后台给的密码的时候报错
这个明天在搞了
2022-07-21 01:12:20.158 WARN 18360 --- [nio-3000-exec-3] o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not look like BCrypt
2022-07-21 01:12:23.771 WARN 18360 --- [nio-3000-exec-8] o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not look like BCrypt
2022-07-21 01:12:31.217 WARN 18360 --- [nio-3000-exec-3] o.s.s.c.bcrypt.BCryptPasswordEncoder : Encoded password does not look like BCrypt