编辑
🔥个人主页:北极的代码(欢迎来访)
🎬作者简介:java后端学习者
❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb
✨命运的结局尽可永在,不屈的挑战却不可须臾或缺!
前情提要
由于我们在苍穹外卖中已经积累了一些Redis基础,关于Redis的基础安装、配置就不再赘述。如果有忘记的同学,可以参考我之前的两篇文章:
- 《保姆级Redis教程:安装配置+数据类型+命令大全,这一篇就够了》
- 《从零搭建Redis生产级应用:连接工厂+序列化器+Template保姆级教程》
正篇开始:项目导入与环境配置全流程
先明确核心目标:成功导入黑马点评项目,完成环境配置,解决MySQL 9.6.0、Nginx等相关踩坑点,确保项目正常启动。
一、导入项目(保姆级步骤)
-
先下载课程配套的黑马点评项目资料,将其解压到 纯英文、无空格、无特殊字符 的目录下(中文路径会导致后续启动报错)。
-
打开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有自动配置机制,满足以下条件即可自动识别驱动:
- pom.xml中已经引入了MySQL驱动依赖;
- SpringBoot会根据jdbc url中的
jdbc:mysql前缀,自动推断使用com.mysql.cj.jdbc.Driver(MySQL 8.0+ 新驱动); - 删掉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_DATE和NO_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启动步骤
- 将课程资料中的Nginx压缩包解压到 纯英文目录(无中文、无空格);
- 进入Nginx解压目录,打开cmd窗口(在地址栏输入cmd回车即可);
- 输入启动命令:
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个问题:
- MySQL 9.6.0的配置优化(URL参数、驱动依赖);
- 数据库表导入的零日期报错问题;
- Nginx和Redis的启动(前端访问+缓存生效)。
按照以上步骤操作,基本能避开所有高频坑,一次成功启动项目。后续我们会深入学习Redis在项目中的实战场景(缓存穿透、击穿、雪崩等),记得持续关注哦~
如果对你有帮助,欢迎点赞、收藏、关注,你的支持就是我持续更新的最大动力!❤️