上篇文章里我展示了怎么让 AI 帮你写代码。这篇想聊相反的一件事怎么让 AI 帮你学会写代码。前者可以叫Vibe CodingAI 是执行者帮你把项目做出来。后者可以叫Vibe LearningAI 是教练带你把能力练出来。这两个方向看起来都在“用 AI 写代码”但教学效果完全不一样。1. 一个很多人都会问的问题上篇《0行手写代码半天交付——Trae辅助JavaWeb图书管理系统全流程》发出去后有人问我“既然 AI 都能写代码了以后是不是就不用学编程了”我的回答很明确如果你的目标只是交付一个小工具AI 代写确实很快但如果你的目标是学会编程只让 AI 替你写远远不够。这就像用导航开车。导航可以把你带到目的地但如果你从来没有自己认过路关掉导航以后你还是不知道该怎么走。所以我在 JavaWeb 课堂里做了同一个实验的另一半还是用 Trae还是学 JDBC但这次不让 AI 直接替学生完成作业而是让它按“老师模式”带学生学。简单对比一下对比项Vibe CodingVibe LearningAI 的角色执行者帮你干活教练带你练习学生的角色提需求、做审核理解、编码、修改AI 是否给代码给完整可运行代码给 Demo但练习要自己写更适合什么做项目、赶进度学技术、打基础这篇文章讲的就是第二种用 AI 学编程而不是用 AI 绕过编程。2. 我在课堂上的三步做法实际操作并不复杂我把它拆成了三步。第一步让 AI 给一个能跑的 Demo学生先对 AI 说“教我 JDBC 查询数据库给我一个最简单能运行的例子。”AI 会生成一段完整代码并解释每一行的作用。学生把代码复制下来配置好数据库先跑通看到控制台打印出结果。这一步的目标不是“自己独立写出来”而是先建立一个完整的感性认识JDBC 到底怎么连接数据库SQL 在哪里执行结果集怎么读取资源为什么要关闭刚开始学习时一个能跑起来的 Demo比一大段抽象概念更容易建立信心。第二步让 AI 基于 Demo 出练习题跑通 Demo 以后学生继续问“基于刚才这个 JDBC Demo给我出几道练习题难度逐步增加。”AI 会给出类似这样的题目难度练习题入门写一个新增用户的方法基础写一个根据姓名模糊查询的方法进阶写一个分页查询方法综合写一个转账方法要求使用事务项目做一个简单的图书借阅管理模块这时学生不能再直接复制 Demo因为题目变了。要完成练习必须理解原来那段代码的结构然后把它迁移到新的问题上。第三步学生自己写AI 帮忙审学生写完代码后把自己的代码贴给 AI“帮我检查这段 JDBC 代码有哪些问题先不要直接给完整答案告诉我哪里需要改。”AI 会从命名、资源关闭、异常处理、SQL 注入、事务边界等角度给反馈。然后学生根据反馈继续修改。这个闭环走完以后学生就不只是“看懂了一个例子”而是经历了看懂 Demo → 参考写法 → 自己编码 → 收到反馈 → 修改完善真正的学习发生在这个循环里。3. 为什么我不强调“禁止复制粘贴”很多老师一看到 AI 写代码第一反应是学生会不会直接复制要不要禁止复制粘贴我自己的看法是单纯禁止复制意义不大。学生把 AI 给的 Demo 复制下来跑一遍再看懂每一行在干什么这本身就是学习。就像木匠学徒先看师傅完整做一把椅子看懂流程以后再自己做不一定非要从第一秒就闭卷操作。关键不是“有没有复制过”而是复制之后有没有进入下一步。真正有效的路径应该是理解 → 参考 → 改编 → 自己实现AI 的 Demo 摆在那里新的练习题也摆在那里。题目一变复制就不够用了。学生必须理解连接、SQL、参数、结果集、关闭资源这些动作之间的关系才能把 Demo 改写成新题的答案。当然如果学生愿意把 Demo 手敲一遍效果会更好。肌肉记忆确实有价值。但我不会把“手敲”当成唯一标准。在真实开发中我们也一直在参考文档、示例、源码和历史代码。学习编程不应该假装这些东西不存在。4. 我给 Trae 配了一套 JDBC 学习流程为了让这个过程更稳定我写了一个 Trae 的Agent Skill。你可以把它理解成一份“AI 教学规范”告诉 Trae 在带学生学习 JDBC 时不要只会甩答案而要按步骤引导学生理解、练习和修改。Skill 文件路径如下.trae/skills/ai-assisted-jdbc-learning/SKILL.md装好以后Trae 会按 8 个步骤引导学习。5. 8 步工作流AI 怎么带学生学 JDBC第 1 步先讲概念建立心智模型学生问“JDBC 是什么能不能用简单的话解释一下”AI 不应该一上来就丢代码而是先讲清楚 JDBC 的位置。比如可以这样解释JDBCJava Database Connectivity是 Java 连接数据库的一套标准接口。你可以把它理解成一个“统一插头”Java 程序只需要按 JDBC 这套接口写底层具体连 MySQL、PostgreSQL 还是其他数据库由对应的驱动来适配。然后给出最核心的流程加载驱动 → 建立连接 → 创建 Statement → 执行 SQL → 处理结果 → 关闭资源先看全局再进入细节。这样学生不容易被Connection、Statement、ResultSet这些类名绕晕。第 2 步给最小可运行示例接下来让 AI 给一个最小 Demo// 1. 加载驱动Class.forName(com.mysql.cj.jdbc.Driver);// 2. 建立连接ConnectionconnDriverManager.getConnection(url,user,password);// 3. 执行查询Statementstmtconn.createStatement();ResultSetrsstmt.executeQuery(SELECT * FROM users);// 4. 处理结果while(rs.next()){System.out.println(rs.getString(name));}// 5. 关闭资源rs.close();stmt.close();conn.close();这个例子不追求工程化甚至可以先不引入 DAO、连接池、封装工具类。它只解决一个问题让学生第一次看到 Java 程序真的把数据库里的数据读出来。这个正反馈很重要。学生看到结果以后再回头理解代码会更有动力。第 3 步逐行解释代码同时提醒常见坑学生跑通以后再让 AI 逐行解释。好的解释不应该只说“这行代码是什么”还要说明“为什么这么写”和“哪里容易出错”。例如Class.forName(com.mysql.cj.jdbc.Driver)用来加载 MySQL 驱动。新版 JDBC 通常可以自动加载但在教学阶段保留这行代码有助于理解“Java 通过驱动连接具体数据库”这个概念。再比如DriverManager.getConnection(...)会创建数据库连接。连接是比较重的资源不适合在高并发场景下频繁创建和销毁后面工程化时通常会引入连接池。学生在这一阶段不仅知道“代码能跑”还开始知道“为什么这么写”。第 4 步让 AI 出递进练习题有了 Demo就要进入练习。我通常会让 AI 按难度给 5 道题难度练习目标1 星写一个insertUser()方法向用户表插入一条数据2 星写一个findByName()方法支持按姓名模糊查询3 星写一个分页查询方法传入页码和每页条数4 星写一个转账方法要求使用事务失败时回滚5 星设计一个简单图书借阅系统完成增删改查这里有一个原则可以问 AI 要提示但不要直接要完整答案。比如学生卡住了可以问“我不知道分页 SQL 怎么写给我提示不要直接给完整代码。”这样 AI 就从“代写者”变成了“助教”。第 5 步让 AI 做代码审核学生写完以后把代码发给 AI 审。我会要求 AI 从这几个维度检查检查维度重点问题代码风格命名是否清晰结构是否容易读资源管理Connection、Statement、ResultSet是否正确关闭安全问题是否存在 SQL 注入是否硬编码密码异常处理是否吞掉异常是否只打印不处理最佳实践是否应该使用PreparedStatement是否适合引入连接池例如 AI 可以这样反馈第 17 行直接拼接了用户输入存在 SQL 注入风险建议改成PreparedStatement。第 24 行手动关闭资源如果中途抛异常后面的close()可能不会执行建议使用try-with-resources。注意我会让 AI 尽量不要一次性给完整修改版代码而是先指出问题和修改方向。学生自己改过一遍印象会深很多。第 6 步从 Demo 升级到工程化写法当学生能写基础 JDBC 代码后就可以让 AI 引导他们思考工程化问题。学生可以问“如果把这个 JDBC Demo 改成更接近真实项目的写法应该怎么做”AI 不需要直接重写项目而是给出路线图抽出 DAO 层把 SQL 操作从 Servlet 或业务代码中分离出来。使用PreparedStatement避免 SQL 注入。使用try-with-resources保证资源可靠关闭。把数据库地址、账号、密码放到配置文件中。引入 HikariCP 这类连接池避免频繁创建连接。统一处理异常不把底层SQLException直接暴露给用户。到这一步学生学的就不只是 JDBC API而是在接触真实项目中的分层、配置、安全和可维护性。第 7 步让 AI 扮演面试官追问还有一个很有效的玩法让 AI 基于学生刚写的代码进行追问。比如“为什么不建议在 Servlet 里直接写 JDBC”“Statement和PreparedStatement的区别是什么”“分页查询用limit offset有什么性能问题”“事务提交失败时应该怎么处理”这种追问比直接背八股文更有效因为问题来自学生自己的代码。被问住的地方往往就是理解还不牢的地方。第 8 步最后做一次综合作业审核综合练习完成后再让 AI 做一次完整评审给出评分比如代码风格、资源管理、安全性、可维护性分别打分。列出问题清单最好精确到具体代码位置。给出修改建议例如“用try-with-resources替代手动关闭资源”。给出下一步提升方向例如“抽 DAO 层”“引入连接池”“统一异常处理”。这一步的目的不是让 AI 代替老师批改所有作业而是让学生在提交前先完成一次自我修正。6. 这个方法为什么有效我认为核心原因有三个。第一先给正反馈再讲抽象概念传统讲 JDBC很多时候会先讲一堆类和接口DriverManager、Connection、Statement、ResultSet。学生还没看到结果就已经被概念淹没了。而 AI 辅助学习可以先给一个能运行的最小 Demo让学生看到数据库数据真的被读出来再回头解释每个对象的作用。学习顺序从先理解一堆概念 → 再尝试运行变成先跑通一个例子 → 再解释背后的概念这对初学者更友好。第二AI 让反馈变得非常及时编程学习最怕的是学生写错了但没人及时指出来。等到老师批改作业时错误习惯可能已经重复了很多遍。AI 的价值在这里非常明显学生写完一小段代码就能马上得到反馈。资源没关、SQL 拼接不安全、异常处理粗糙这些问题都可以及时暴露出来。即时反馈会让练习效率提高很多。第三学生从“看答案”变成“改答案”只看 AI 生成的代码很容易产生一种错觉我好像懂了。但一到自己写就发现写不出来。所以我更看重这个循环理解 Demo → 参考 Demo → 自己写新题 → AI 审核 → 自己修改其中最关键的是“自己写”和“自己改”。AI 可以给 Demo可以给提示可以做代码审查但最后那一步必须由学生完成。只有这样能力才会真正长在自己身上。7. Agent Skill给 AI 装一套“教学规范”这套流程如果每次都靠手动 prompt学生很容易忘记也容易把 AI 又用回“直接给答案”的模式。所以我把它整理成了一个 Trae Agent Skill。文件位置vibe_learning/.trae/skills/ai-assisted-jdbc-learning/SKILL.md里面主要定义了四类内容学习目标帮助 Java Web 初学者掌握 JDBC 的基本用法和工程化思路。学习循环理解、模仿、修改、实现、讲解、扩展。8 步工作流每一步学生怎么问AI 应该怎么回应。常见陷阱提醒复制后不理解、跳过练习、只要完整答案、不做代码复盘。装好以后学生打开 Trae不需要每次重新写一大段提示词就能让 AI 自动进入“JDBC 教练”模式。后面我会单独写一篇文章讲怎么自己写一个 Agent Skill。8. 课堂反馈这个学期 JavaWeb 课上我用这套方法带学生学 JDBC。有个学生的反馈让我印象很深“以前学 JDBC就是看 PPT、照着教材敲代码过两天就忘了。这次 AI 先给一个能跑的 Demo我照着写几个练习再让 AI 帮我看问题。过程比直接抄代码费劲但学完真的觉得自己会了。”还有一个意外收获学生开始把这套方法迁移到其他知识点上。他们学会了一个通用流程遇到新知识点 → 让 AI 给最小 Demo → 跑通并理解 → 让 AI 出题 → 自己写 → 让 AI 审对我来说这比单纯学会 JDBC 更有价值。因为真正重要的不是“这节课会不会写 JDBC”而是学生开始知道AI 时代学习不是等 AI 给答案而是学会让 AI 帮自己练能力。9. 一句话总结让 AI 写 Demo 给你看让 AI 出题给你练让 AI 审你写的代码但最后的代码要自己写、自己改、自己理解。上篇文章讲的是怎么让 AI 帮你干活。这篇文章讲的是怎么让 AI 帮你学习。两篇合在一起才是我目前对这个问题的完整回答AI 时代编程仍然要学但学习方式应该升级。资源本文配套的实验模板和 Trae Agent Skill已打包上传百度网盘下载后解压即可使用。如果链接失效评论区留言我会更新。项目说明文件名vibe_learning.rar下载链接https://pan.baidu.com/s/1OKz1UrW_6AiHdAV2KmDUdg提取码uhmi压缩包内主要包含JDBC 学习实验模板Trae Agent Skill 配置文件Skill 文件路径vibe_learning/.trae/skills/ai-assisted-jdbc-learning/SKILL.md使用方式下载并解压vibe_learning.rar确认.trae/skills/目录放在解压的项目根目录下打开 Trae按本文 8 步流程开始学习 JDBC上篇文章《0行手写代码半天交付——Trae辅助JavaWeb图书管理系统全流程》如果你也在纠结“AI 时代还要不要学编程”我的建议是当然要学。但不要再用纯手工时代的方法学。把 AI 当成教练而不是答案机器。这样它才真的能帮你变强。觉得有用就点个赞 转发给也在学 JavaWeb 的同学。