大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
CRUD 里程碑
CRUD(Create、Read、Update、Delete)是 Web 与 API 的四种基本数据操作。全栈路线图 checkpoint-simple-crud-apps 要求:在尚未系统学习 REST 的情况下,也能用 命令行程序 + 数据库 完成完整的数据生命周期。这与 spring-boot-essentials 后期的 REST CRUD 互补——这里刻意 不启动 HTTP 服务器,专注 SQL、事务与 CLI 参数设计。
学习目标
- 对照 /roadmaps/full-stack 的 checkpoint-simple-crud-apps,实现带
--new/--list/--done/--delete的 Todo CLI - 用 PostgreSQL(或 MySQL)持久化数据,理解连接串、迁移与唯一约束
- 说清本里程碑与 fullstack-roadmap CRUD 节点、spring-boot-essentials JPA 课的分工
路线图要求回顾
官方 Checkpoint 建议实现 CLI Todo,支持:
| 选项 | 行为 |
|---|---|
--new "标题" | 新增待办 |
--list [all|pending|done] | 按状态列表 |
--done [id] | 标记完成 |
--delete [id] | 删除 |
--help / --version | 帮助与版本 |
你可以用 Java + JDBC、Node + pg 或 Python + psycopg2;选一种你已在 /roadmaps/full-stack 后端语言节点上确定的栈即可。
推荐实现结构
todo-cli/
├── src/
│ ├── cli.ts # 解析 argv
│ ├── repository.ts # SQL CRUD
│ └── db.ts # 连接池
├── migrations/
│ └── 001_todos.sql
├── package.json
└── README.md
表结构示例:
CREATE TABLE todos (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
done BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
Create:INSERT 后返回 id;Read:SELECT 带 WHERE done = $1;Update:UPDATE ... WHERE id = $1 并检查 rowCount;Delete:软删或硬删二选一,README 写清策略。
与 Spring Boot 的衔接
完成 CLI 后,同一套表可被 spring-boot-essentials 的 @RestController 复用:CLI 验证业务规则,API 层只加 HTTP 映射。日后 react-essentials 前端调 API 时,数据库 schema 已稳定。
本地开发可用 docker-essentials 起 PostgreSQL:
docker run -d --name pg -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:16
常见坑
- 无输入校验:空标题、非法 id 应给出明确 stderr 与退出码
- 连接未关闭:CLI 一次执行应
pool.end()或等价释放 - 并发:CLI 单进程通常够用;若多进程写同一库,考虑唯一约束与重试
练习
- 实现 Todo CLI,四条 CRUD 子命令均可演示,数据落 PostgreSQL
- README 含安装、迁移、
--help截图或终端录屏说明 - 在 /roadmaps/full-stack 勾选 checkpoint-simple-crud-apps,并链接你的仓库
小结
CRUD 里程碑 = CLI + 数据库,四操作闭环。 不依赖 API 也能证明你会持久化与命令行设计。下一课 CLI 里程碑 扩展文件、HTTP 与第三方库能力。