首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【黑马点评日记Day01】项目导入和环境配置,踩坑点全流程解析

【黑马点评日记Day01】项目导入和环境配置,踩坑点全流程解析

作者头像
北极的代码
发布2026-04-22 14:19:45
发布2026-04-22 14:19:45
1900
举报

前言: 经过苍穹外卖的学习,我们已经了解了最基础的增删改查的企业级应用,在这个项目中我们使用到过Redis,是为了减轻数据库的压力来缓存数据使用的,提高了查询的效率,这里我们会重点学习一下Redis,而学习Redis时,自然而然的引入了另一个重量级项目----黑马点评。这是Redis在企业级项目中的实战,需要我们仔细学习。


前情提要:

由于我们在苍穹外卖中已经有了一些Redis基础了,关于基础的支持我就不再写了,如果有忘记的,或者有需要的,可以看我前面发的几篇文章:《保姆级Redis教程:安装配置+数据类型+命令大全,这一篇就够了》

《从零搭建Redis生产级应用:连接工厂+序列化器+Template保姆级教程》


正篇开始:

我们先导入黑马点评的项目到我们的idea中:

导入项目:

我们先把课程资料下载下来,然后放到一个没有中文路径的目录下,然后在里面把黑马点评项目导入idea中,我们可以在idea中新建,然后打开项目。


项目的环境配置:

导入项目之后,我们先打开yaml文件,总览一下:

项目核心配置文件为 src/main/resources/application.yaml以下参数必须修改,否则启动失败:

代码语言:javascript
复制
server:
  port: 8081 # 后端端口(默认8081,勿与前端8080冲突)
spring:
  application:
    name: hmdp
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver # MySQL8.0用cj驱动,5.7用com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/hmdp?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root # 你的MySQL用户名
    password: 123456 # 你的MySQL密码(必须正确)
  data:
    redis:
      host: 127.0.0.1 # Redis地址(本地用localhost)
      port: 6379
      password:  # 你的Redis密码(无密码留空)
      lettuce:
        pool:
          max-active: 10
  jackson:
    default-property-inclusion: non_null
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true # 下划线转驼峰(必开)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开发日志

注意: !我们需要把数据库的用户名和密码换成我们自己的,同时,关于redis的host也要换成我们的本地localhost127.0.0.1 ,然后就是我们的mysql的驱动,由于我自己的MySQL的版本是最新版9.6.0,而资料里提供的版本比较低,好像时5开头的,因此这里的mysql驱动就需要更改。


而:MySQL8.0 必须用 com.mysql.cj.jdbc.Driver,5.7 用旧驱动


更新的版本: 因为SpringBoot 会自动配置 MySQL 驱动,完全不需要手动写 driver-class-name,用的 MySQL 9.6.0(最新版) + SpringBoot 2.7+,不写驱动类是完全正确的


为什么不用配 driver-class-name

SpringBoot 有 自动配置机制

  1. 只要 pom.xml 引入了 MySQL 驱动依赖
  2. SpringBoot 会自动识别驱动
  3. 自动根据 url 推断驱动类

url 长这样:

代码语言:javascript
复制
url: jdbc:mysql://localhost:3306/hmdp?xxx

SpringBoot 看到 jdbc:mysql 就知道:

  • com.mysql.cj.jdbc.Driver(MySQL 8.0+ 新驱动)

所以 删掉 driver-class-name 完全没问题,这是现代 SpringBoot 标准写法。


application.yaml 最简正确写法
代码语言:javascript
复制
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hmdp?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 你的MySQL密码

不用写 driver-class-name不用写 driverClassName


MySQL 9.6.0 关键注意点

MySQL 9.6.0(最新版本),比 8.0 更严格,有 2 个坑 大多数的人都会踩:

1. URL 必须加 2 个强制参数

你的 jdbc url 必须包含这两个,否则连不上 / 乱码 / 时区报错

代码语言:javascript
复制
url: jdbc:mysql://localhost:3306/hmdp?
useSSL=false&
serverTimezone=Asia/Shanghai&
allowPublicKeyRetrieval=true&
useUnicode=true&
characterEncoding=utf8

✅ 必须加:

  • serverTimezone=Asia/Shanghai(时区,MySQL 9.0+ 强制)
  • allowPublicKeyRetrieval=true(9.0 以上默认关闭,会导致连接失败

2. pom.xml 驱动依赖必须正确

MySQL 8.0 / 9.0 统一用这个依赖(不要改版本):

xml

代码语言:javascript
复制
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

SpringBoot 会自动匹配驱动版本,不用手动指定 version


数据库表的导入问题

由于资料里提供了hmdp的sql文件,里面包含了11个项目需要的表格和数据。我们需要把这些表格导入到idea的数据库中。

首先:先新建数据源(连接你MySQL 9.6.0)

就是让 IDEA先连本地装的 MySQL 服务 你要填的就这 4 个:

  • 主机:localhost
  • 端口:3306
  • 用户名:root
  • 密码:你安装 MySQL 时自己设的密码

连接成功 → 左边出现你的 MySQL → 这一步才算完。


然后:在这个连接里 新建数据库 hmdp

右键 → 新建数据库

  • 库名:hmdp
  • 字符集:utf8mb4
  • 排序规则:utf8mb4_general_ci

最后:才能导入表 选中 hmdp 库 → 运行 SQL 文件 → 选择 hmdp.sql

这里一定要先执行这句,否则必报错:

代码语言:javascript
复制
sqlSET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUT

为什么要执行这句: MySQL 5.6及更早版本: 允许使用 '0000-00-00 00:00:00' 作为默认值(称为"零日期")

MySQL 5.7+: 默认启用了 NO_ZERO_DATE 和 NO_ZERO_IN_DATE SQL模式,禁止使用

MySQL 8.0/9.x: 更加严格,完全不支持零日期

执行后,MySQL 就会:允许 0000-00-00 这种时间 → 脚本能正常导入 → 不报错

MySQL 9.6.0 太新、太严格

默认不允许 0000-00-00 00:00:00 这种时间(认为是非法日期)

只需要修改这2个字段:

代码语言:javascript
复制
 tb_seckill_voucher.begin_time - 从 NOT NULL DEFAULT '0000-00-00 00:00:00' 改为 NULL DEFAULT NULL
代码语言:javascript
复制
tb_seckill_voucher.end_time - 从 NOT NULL DEFAULT '0000-00-00 00:00:00' 改为 NULL DEFAULT NULL

其他所有表都不需要修改

修改完成后,重新执行整个SQL文件就可以正常导入了。把0000-00-00字段修改成NULL,无伤大雅,因为这些我们可以在java中轻易判断。

改为 NULL 的理由: 语义正确: NULL 表示"未知"或"未设置",比零日期更符合业务含义 兼容性好: 所有MySQL版本都支持 代码友好: Java中可以正常处理 null 值

因此之后我们就成功的导入了数据库表格。


Nginx的配置:

这一步比较简单,我们只需要把老师给的压缩包直接复制到不含中文目录的地方,然后在当前目录打开cmd窗口,启动nginx。没什么好说的


同时还要启动Redis

启动 Redis:redis-server(Windows 双击redis-server.exe)


测试:

之后我们启动后端项目,然后打开http://localhost:8081/shop-type/list,如果页面是:

则导入成功。


前端的访问

直接启动nginx,在浏览器访问 后端 SpringBoot(8081):负责接口、数据、业务 前端 :放在 Nginx 里跑 Nginx 就是前端的 “服务器” 为什么一定要启动 Nginx 因为黑马点评的前端不是放在 SpringBoot 里的 而是: 前端是纯静态页面(HTML、JS、图片) 老师把它打包成了 nginx-html 文件夹 必须用 Nginx 托管 浏览器才能访问 访问地址:http://localhost(默认 80 端口) 你不启动 Nginx →浏览器打开就是:无法访问、空白页、404 页面如图:

结语:如果对你有帮助,请点赞,关注,收藏,你的支持就是我最大的鼓励!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情提要:
  • 正篇开始:
    • 导入项目:
    • 项目的环境配置:
      • application.yaml 最简正确写法
    • MySQL 9.6.0 关键注意点
      • 1. URL 必须加 2 个强制参数
      • 2. pom.xml 驱动依赖必须正确
    • 数据库表的导入问题
      • 首先:先新建数据源(连接你MySQL 9.6.0)
      • 然后:在这个连接里 新建数据库 hmdp
    • Nginx的配置:
    • 同时还要启动Redis
    • 测试:
    • 前端的访问
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档