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

0 阅读7分钟

​编辑

 🔥个人主页:北极的代码(欢迎来访)
🎬作者简介:java后端学习者
❄️个人专栏:苍穹外卖日记SSM框架深入JavaWeb
命运的结局尽可永在,不屈的挑战却不可须臾或缺!

前情提要

由于我们在苍穹外卖中已经积累了一些Redis基础,关于Redis的基础安装、配置就不再赘述。如果有忘记的同学,可以参考我之前的两篇文章:

  • 《保姆级Redis教程:安装配置+数据类型+命令大全,这一篇就够了》
  • 《从零搭建Redis生产级应用:连接工厂+序列化器+Template保姆级教程》

正篇开始:项目导入与环境配置全流程

先明确核心目标:成功导入黑马点评项目,完成环境配置,解决MySQL 9.6.0、Nginx等相关踩坑点,确保项目正常启动。

一、导入项目(保姆级步骤)

  1. 先下载课程配套的黑马点评项目资料,将其解压到 纯英文、无空格、无特殊字符 的目录下(中文路径会导致后续启动报错)。

  2. 打开IDEA,点击「File → Open」,选择解压后项目根目录下的 pom.xml 文件,选择「Open as Project」,等待IDEA加载项目。

二、项目核心环境配置(必改项)

项目导入后,首要任务是修改核心配置文件 src/main/resources/application.yaml,以下参数必须修改,否则项目启动失败!

server:
  port: 8081 # 后端端口(默认8081,勿与前端Nginx的80端口冲突)
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 # Redis连接池最大活跃数
  jackson:
    default-property-inclusion: non_null # 忽略返回结果中的null字段
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true # 下划线转驼峰(必开,避免字段映射失败)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL日志,方便调试

关键注意点(针对MySQL 9.6.0)

很多同学用的是MySQL 9.6.0(最新版),而资料中默认的配置是适配旧版本MySQL的,这里有一个重要优化:SpringBoot会自动配置MySQL驱动,完全不需要手动写driver-class-name

为什么不用配driver-class-name?

SpringBoot有自动配置机制,满足以下条件即可自动识别驱动:

  1. pom.xml中已经引入了MySQL驱动依赖;
  2. SpringBoot会根据jdbc url中的 jdbc:mysql 前缀,自动推断使用 com.mysql.cj.jdbc.Driver(MySQL 8.0+ 新驱动);
  3. 删掉driver-class-name,是现代SpringBoot的标准写法,更简洁、不易出错。
application.yaml 最简正确写法(适配MySQL 9.6.0)
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hmdp?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root # 替换成你的用户名
    password: 你的MySQL密码 # 替换成你的密码

✅ 不用写driver-class-name ✅ 不用写driverClassName,SpringBoot自动搞定!

三、MySQL 9.6.0 专属踩坑点(必看)

MySQL 9.6.0 比8.0版本更严格,有2个高频坑,90%的同学都会踩,一定要注意!

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

如果url中缺少以下参数,会导致数据库连接失败、乱码、时区报错,直接复制下面的url替换即可:

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:MySQL 9.0+ 默认关闭该功能,不开启会导致连接失败。

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

MySQL 8.0 / 9.0 统一使用以下依赖,不用手动指定版本,SpringBoot会自动匹配适配版本:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

四、数据库表导入(最易报错环节)

资料中提供了 hmdp.sql 文件,包含项目所需的11张表和测试数据,导入步骤如下,顺序不能错!

步骤1:新建数据源(连接MySQL 9.6.0)

先让IDEA连接本地的MySQL服务,需要填写4个核心参数:

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

连接成功后,IDEA左侧会显示你的MySQL实例,这一步才算完成。

步骤2:新建数据库 hmdp

右键点击左侧MySQL实例 → 「新建数据库」,填写以下信息:

  • 数据库名:hmdp(必须一模一样,否则项目无法连接)
  • 字符集:utf8mb4(支持中文和表情,避免乱码)
  • 排序规则:utf8mb4_general_ci(默认即可)

点击确定,hmdp数据库就创建完成了。

步骤3:执行SQL,导入数据表(关键一步)

⚠️ 重点:先执行以下SQL,再导入hmdp.sql,否则必报错!

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
为什么要执行这句SQL?

核心原因:MySQL版本差异导致的“零日期”问题:

  • MySQL 5.6及更早版本:允许使用 '0000-00-00 00:00:00' 作为时间默认值(零日期);
  • MySQL 5.7+:默认启用 NO_ZERO_DATENO_ZERO_IN_DATE 模式,禁止零日期;
  • MySQL 8.0/9.x:更严格,完全不支持零日期,而黑马点评的sql文件中,部分字段默认值是零日期。

执行这句SQL后,MySQL会临时关闭零日期限制,允许导入sql文件,且只对当前查询窗口有效,非常安全,不会影响MySQL全局配置。

补充优化(可选但推荐)

导入sql前,建议修改2个字段的默认值(避免后续隐患),其他表无需修改:

  • tb_seckill_voucher.begin_time:从 NOT NULL DEFAULT '0000-00-00 00:00:00' 改为 NULL DEFAULT NULL
  • tb_seckill_voucher.end_time:从 NOT NULL DEFAULT '0000-00-00 00:00:00' 改为 NULL DEFAULT NULL

改为NULL的理由:

  • 语义正确:NULL表示“未知”或“未设置”,比零日期更符合业务逻辑;
  • 兼容性好:所有MySQL版本都支持NULL值;
  • 代码友好:Java中可以正常处理null值,后续业务中容易判断。
最终导入步骤

选中hmdp数据库 → 右键 → 「运行SQL文件」 → 选择资料中的 hmdp.sql → 点击开始,等待执行完成,无报错即导入成功(刷新数据库,能看到11张表即为正常)。

五、Nginx配置与启动(前端访问必备)

黑马点评的前端是纯静态页面(HTML、JS、图片),没有集成在SpringBoot中,而是需要用Nginx托管,不启动Nginx,就看不到前端页面!

Nginx启动步骤

  1. 将课程资料中的Nginx压缩包解压到 纯英文目录(无中文、无空格);
  2. 进入Nginx解压目录,打开cmd窗口(在地址栏输入cmd回车即可);
  3. 输入启动命令:nginx(回车后,屏幕闪一下黑框,即启动成功,Nginx在后台运行)。

六、Redis启动(项目核心依赖)

Redis是黑马点评的核心缓存组件,必须启动,否则项目无法正常运行:

  • Windows系统:找到Redis安装目录,双击 redis-server.exe 即可启动;
  • Linux/Mac系统:打开终端,输入命令 redis-server 启动。

七、项目启动与测试(验证配置是否成功)

1. 启动后端项目

在IDEA中找到项目启动类 HmDianPingApplication,右键 → 「Run」,等待启动完成,控制台显示Started HmDianPingApplication 即启动成功(无报错)。

2. 接口测试(验证后端配置)

打开浏览器,访问地址:http://localhost:8081/shop-type/list,如果返回JSON数组(包含餐饮、购物等商户类型),说明数据库、Redis、后端配置均正常。

3. 前端访问(验证Nginx配置)

打开浏览器,访问地址:http://localhost(Nginx默认80端口),能看到黑马点评的手机版前端页面,即前端配置成功。

⚠️ 注意:如果访问前端出现404、空白页,大概率是Nginx未启动,或Nginx解压目录有中文,重新启动Nginx即可。

八、总结

黑马点评Day01的核心是「项目导入+环境配置」,重点解决3个问题:

  1. MySQL 9.6.0的配置优化(URL参数、驱动依赖);
  2. 数据库表导入的零日期报错问题;
  3. Nginx和Redis的启动(前端访问+缓存生效)。

按照以上步骤操作,基本能避开所有高频坑,一次成功启动项目。后续我们会深入学习Redis在项目中的实战场景(缓存穿透、击穿、雪崩等),记得持续关注哦~

如果对你有帮助,欢迎点赞、收藏、关注,你的支持就是我持续更新的最大动力!❤️