[Acwing-Springboot] 配置Mysql

目录

    • 前言
      • 模型介绍1
      • Mysql
      • IDEA操作Mysql
      • SpringBoot层次
      • POJO
      • DAO
      • Controller
      • 权限判断

前言

技术栈 : Spring Mysql
躺在床上怎么也不安定
今天一天用到的新玩意太多了,感觉不了解一下到后面不好受


模型介绍1

一般来说只有一个后端即(Springboot)
而一个后端服务多个Client

较为常见的是 :
每个用户会给服务器传送用户名和密码

而对于这些用户信息的存放我们采用数据库存放

这里采用Mysql
[Acwing-Springboot] 配置Mysql_第1张图片

Mysql安装过程不在介绍


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的表,表中包含idusername两个属性。
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
....

IDEA操作Mysql

0.基本操作

[Acwing-Springboot] 配置Mysql_第2张图片

[Acwing-Springboot] 配置Mysql_第3张图片

通过IDEA直接链接我们的本地数据库,填入相关的账号和密码以及需要使用的数据库之后,直接应用即可

[Acwing-Springboot] 配置Mysql_第4张图片
通过可视化界面,我们可以完成最基础的加一行和加一列操作
(其他操作就不一一列出了)

2.配置相关依赖


Spring Boot Starter JDBC

  1. 实现对数据源的自动装配 (自动装配是Spring的基本概念)
    • dataSource
  2. 事务控制支持
        <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

SpringBoot层次

pojo层 : 这里是将数据库中属性对应到Java的类中

mapper/Dao层 : 这个层是对pojo或者对数据库中的一张表的CRUD进行封装。没记错的话,SSMDao层都是接口,即只做原子操作,不考虑如何实现一个功能

service层 : 对多个Dao进行封装,也就是通过多个Dao实现具体的一个功能

serviceImpl层 : 这个是service接口的实现类,给controller层使用

Controller层 : 请求转发实现页面跳转(上节课的内容)


POJO

显然我们根据数据库中的表进行对应我们可以得到
一个User类包含id,username,password

数据库中的属性对应到Java中

@Data //小辣椒 简化了get set tostring
@NoArgsConstructor//无参构造
@AllArgsConstructor//有参构造 显然这两个市成对出现的
public class User {
    private  Integer id;
    private  String username;
    private  String password;
}

DAO

一个表对应一个DAO
BaseMapper是Mybatis-plus通用CRUD封装接口

即里面封装了很多CRUD的操作

(如果是Mybatis的话得手写QAQ)
[了解更多点击这里]

@Mapper这个是Mybatis对接口层的一个注解,没有这个的话我们还需要写一个xml然后让Spring去扫描这个地址
(少走几十年弯路)

@Mapper
public interface UserMapper  extends BaseMapper<User> {
}

Controller

@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判断。(反正也听不懂,小插曲)


安装好这个依赖之后,我们再次启动服务就会发现需要登录了

[Acwing-Springboot] 配置Mysql_第5张图片
然后我们就寄了,这里可能是因为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

你可能感兴趣的:(#,JavaWeb,计算机组成原理,mysql,spring,boot,数据库)