Appearance
02:Demo 环境、启动与调试
1. 你需要准备的工具
| 工具 | 建议版本 | 用途 |
|---|---|---|
| JDK | 8 | 与当前 CRM 的编译级别保持一致 |
| Maven | 3.8+ | 下载依赖、编译、测试、启动 |
| MySQL | 8.x | Demo 的本地数据库 |
| IntelliJ IDEA | Community 或 Ultimate | 阅读、调试、运行 Java |
| Postman / Apifox | 任意 | 手工调用接口 |
| curl | macOS 自带 | 命令行验证接口 |
检查环境:
bash
java -version
mvn -version
mysql --version2. Demo 的目录
text
my-center/
├── pom.xml
├── README.md
└── src/
├── main/java/com/hc/my/demo/
│ ├── HcMyDemoApplication.java
│ ├── common/ # 通用响应
│ ├── config/ # MyBatis-Plus、分页配置
│ ├── controller/ # HTTP 接口
│ ├── entity/ # 表映射
│ ├── mapper/ # 数据访问
│ ├── model/ # 分页请求/响应模型
│ └── service/ # 业务逻辑
├── main/resources/
│ ├── application.yml
│ ├── schema.sql
│ ├── data.sql
│ └── sql/hc-my-demo.sql
└── test/3. 数据库初始化
Demo 数据库名包含连字符,所以 SQL 中必须使用反引号:
sql
CREATE DATABASE `hc-my-demo`;初始化脚本:
bash
cd /Users/admin/code/hc-project/api-java/my-center
mysql -h127.0.0.1 -P3306 -uroot -p < src/main/resources/sql/hc-my-demo.sql验证:
sql
USE `hc-my-demo`;
SHOW TABLES;
SELECT COUNT(*) FROM demo_customer;预期有 demo_customer 表和 20 条测试数据。
4. 数据库配置不要硬编码密码
application.yml 使用环境变量:
yaml
spring:
datasource:
username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:}本机启动前设置:
bash
export MYSQL_USERNAME=root
export MYSQL_PASSWORD='你的本机 MySQL 密码'
mvn spring-boot:run不要把个人密码直接写入 Git 管理的 YAML 文件。
5. 启动和第一条接口验证
启动日志出现以下内容代表 Web 服务已启动:
text
Tomcat started on port(s): 7011
Started HcMyDemoApplication请求分页接口:
bash
curl -X POST 'http://127.0.0.1:7011/crm/web/client/customerInfo/query/page?page=1&size=5' \
-H 'Content-Type: application/json' \
-d '{"filter":{"children":[]}}'你应该看到:
json
{
"code": 200,
"success": true,
"data": {
"records": [],
"total": 20,
"current": 1,
"size": 5,
"pages": 4
}
}records 实际会包含 5 条数据,此处用空数组省略展示。
6. 调试技巧
6.1 在 IDEA 中断点
在 CustomerInfoController.queryPage 和 CustomerPageService.queryPage 两处打断点。
调用 curl 后,你会按以下顺序停住:
text
Controller 接到请求
-> PageRequestResolver 解析 page / size
-> Service 组合查询条件
-> Mapper 发出 SQL
-> Controller 返回 JSON6.2 看 SQL
Demo 已把 Mapper 日志设为 debug。启动后观察控制台中的 SQL、参数和查询结果数量。初学阶段要养成“接口结果不对,先确认 SQL”的习惯。
6.3 每次修改后的最小检查
bash
mvn test如果你修改了接口行为,还要手动调用一次 curl/Postman,并执行一条 SQL 检查库中是否真的写入或删除了数据。
7. 正式项目为什么本机不能直接启动
正式 CRM 继承公司内部 hc-boot-starter,并依赖内部 Maven 私服、配置中心、服务发现、认证、租户等基础设施。本机私服没有授权时 Maven 会返回 401。
因此学习时用 Demo 跑通核心链路;需要改正式项目时,再向团队确认 Maven、配置中心、数据库和测试环境的接入方式。
