Skip to content

02:Demo 环境、启动与调试

1. 你需要准备的工具

工具建议版本用途
JDK8与当前 CRM 的编译级别保持一致
Maven3.8+下载依赖、编译、测试、启动
MySQL8.xDemo 的本地数据库
IntelliJ IDEACommunity 或 Ultimate阅读、调试、运行 Java
Postman / Apifox任意手工调用接口
curlmacOS 自带命令行验证接口

检查环境:

bash
java -version
mvn -version
mysql --version

2. 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.queryPageCustomerPageService.queryPage 两处打断点。

调用 curl 后,你会按以下顺序停住:

text
Controller 接到请求
  -> PageRequestResolver 解析 page / size
  -> Service 组合查询条件
  -> Mapper 发出 SQL
  -> Controller 返回 JSON

6.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、配置中心、数据库和测试环境的接入方式。

Lucking