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

张开发
2026/4/12 18:19:21 15 分钟阅读

分享文章

【黑马点评日记Day01】项目导入和环境配置,踩坑点全流程解析
个人主页北极的代码欢迎来访作者简介java后端学习者❄️个人专栏苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺前言经过苍穹外卖的学习我们已经了解了最基础的增删改查的企业级应用在这个项目中我们使用到过Redis是为了减轻数据库的压力来缓存数据使用的提高了查询的效率这里我们会重点学习一下Redis而学习Redis时自然而然的引入了另一个重量级项目----黑马点评。这是Redis在企业级项目中的实战需要我们仔细学习。前情提要由于我们在苍穹外卖中已经有了一些Redis基础了关于基础的支持我就不再写了如果有忘记的或者有需要的可以看我前面发的几篇文章《保姆级Redis教程安装配置数据类型命令大全这一篇就够了》《从零搭建Redis生产级应用连接工厂序列化器Template保姆级教程》正篇开始我们先导入黑马点评的项目到我们的idea中导入项目我们先把课程资料下载下来然后放到一个没有中文路径的目录下然后在里面把黑马点评项目导入idea中我们可以在idea中新建然后打开项目。项目的环境配置导入项目之后我们先打开yaml文件总览一下项目核心配置文件为src/main/resources/application.yaml以下参数必须修改否则启动失败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?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue 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.Driver5.7 用旧驱动更新的版本因为SpringBoot 会自动配置 MySQL 驱动完全不需要手动写 driver-class-name用的MySQL 9.6.0最新版 SpringBoot 2.7不写驱动类是完全正确的。为什么不用配 driver-class-nameSpringBoot 有自动配置机制只要 pom.xml 引入了 MySQL 驱动依赖SpringBoot 会自动识别驱动会自动根据 url 推断驱动类url 长这样url: jdbc:mysql://localhost:3306/hmdp?xxxSpringBoot 看到jdbc:mysql就知道用com.mysql.cj.jdbc.DriverMySQL 8.0 新驱动所以删掉 driver-class-name 完全没问题这是现代 SpringBoot 标准写法。application.yaml 最简正确写法spring: datasource: url: jdbc:mysql://localhost:3306/hmdp?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: 你的MySQL密码✅不用写 driver-class-name✅不用写 driverClassNameMySQL 9.6.0 关键注意点MySQL 9.6.0最新版本比 8.0 更严格有 2 个坑 大多数的人都会踩1. URL 必须加 2 个强制参数你的 jdbc url 必须包含这两个否则连不上 / 乱码 / 时区报错url: jdbc:mysql://localhost:3306/hmdp? useSSLfalse serverTimezoneAsia/Shanghai allowPublicKeyRetrievaltrue useUnicodetrue characterEncodingutf8✅ 必须加serverTimezoneAsia/Shanghai时区MySQL 9.0 强制allowPublicKeyRetrievaltrue9.0 以上默认关闭会导致连接失败2. pom.xml 驱动依赖必须正确MySQL 8.0 / 9.0 统一用这个依赖不要改版本xmldependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependencySpringBoot 会自动匹配驱动版本不用手动指定 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这里一定要先执行这句否则必报错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个字段:tb_seckill_voucher.begin_time - 从 NOT NULL DEFAULT 0000-00-00 00:00:00 改为 NULL DEFAULT NULLtb_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启动 Redisredis-serverWindows 双击redis-server.exe测试之后我们启动后端项目然后打开http://localhost:8081/shop-type/list如果页面是则导入成功。前端的访问直接启动nginx在浏览器访问后端 SpringBoot8081负责接口、数据、业务前端 放在 Nginx 里跑 Nginx 就是前端的 “服务器”为什么一定要启动 Nginx因为黑马点评的前端不是放在 SpringBoot 里的而是 前端是纯静态页面HTML、JS、图片老师把它打包成了 nginx-html 文件夹 必须用 Nginx 托管浏览器才能访问 访问地址http://localhost默认 80 端口你不启动 Nginx →浏览器打开就是无法访问、空白页、404页面如图结语如果对你有帮助请点赞关注收藏你的支持就是我最大的鼓励

更多文章