作者:輕眉
演示主題:由?AI 自動生成 0 到 1 的電商訂單 Java 項目
演示目的
面向?Java?零基礎的用戶,通過靈碼的產品能力(如提示詞、編碼智能體、項目?Rules?和 SQLite MCP?服務、單元測試)自動生成?0?到?1?的電商訂單?Java?項目,使用?Maven?作為構建工具。
演示準備
1.?安裝 JetBrains IDE
版本號?2020.3 及以上。Lingma IDE:通過安裝包下載安裝。參考:https://help.aliyun.com/zh/lingma/user-guide/installation-and-login-guide/
2.?安裝本地 Maven 工具
https://maven.apache.org/download.cgi,或者使用 brew 安裝 Maven。
注:未提前安裝,靈碼智能體編譯運行時,自主檢查 Maven 環境和依賴,會自主修復安裝下載依賴。
3.?安裝最新的靈碼插件
注:也可以直接使用靈碼 IDE(https://lingma.aliyun.com/download)
4.?安裝簡單實用的數據庫 SQLite3
brew?install sqlite3
5.?安裝 uvx
pip?install uvx
這里需要注意 python 的環境 3.12 及以上,建議用 pipenv/poetry(https://python-poetry.org/)等配置 python 的環境變量。確保 uvx 安裝正確,信息參考如下:
6.?安裝 mcp-server-sqlite
uvx?install ?mcp-server-sqlite
7.?創建演示目錄和 SQLite 數據庫文件
在項目所在根目錄下創建演示目錄,mkdir< dir >,例如,在?/Users/yuxiao/Downloads/?下創建?0713demo:
mkdir?/Users/yuxiao/Downloads/0713demo
在該目錄下創建數據庫文件 “test.db”
cd?< dir >,例:
cd?/Users/yuxiao/Downloads/0713demo
touch?test.db
8.?在靈碼插件中,配置 mcp-server-sqlite 服務
通過 json 配置更改來添加插 MCP 插件。
添加如下內容:
"mcp-server-sqlite":?{"autoApprove":?[],"disabled":?false,"timeout":?60,"command":?"mcp-server-sqlite","args":?["--db-path","/Users/yuxiao/Downloads/0713demo/test.db"],"transportType":?"stdio"
},
注:/Users/yuxiao/Downloads/0713demo/路徑改成您實際創建 test.db 所在的絕對路徑。
演示步驟
1. 在 IDE 中創建一個新的空工程
以下以 IDEA 為例:
2. 打開靈碼,使用 agent 模式,模型選擇“qwen3-thinking”
注:這里也可換成 qwen3-coder,作為新手推薦 qwen3-thinking,可以學習分析思考過程。
3. 創建一個空的 Maven 工程
輸入 prompt:“生成一個 maven 工程”
靈碼編碼智能體自動生成一個基礎的 Maven 工程結構,包含標準目錄和 pom.xml 配置。
該初始化 Maven 工程包含:
- 標準的 Maven 目錄結構
- 基礎 pom.xml 配置(含 JUnit 5 依賴)
- 簡單的 Java 主程序
- 對應的測試類
注:靈碼智能體自動生成的項目目錄和代碼,每次執行結果不會完全一模一樣!本文中的內容是作者做?demo?生成的效果,作為示例參考。
4. 創建電商訂單場景的實體類
輸入 prompt:“構建一個電商定單的 entity 的類,包含最基礎的字段。”
靈碼編碼智能體自動生成?Order?實體類,該 Order 實體類包含以下核心字段:
- orderId - 訂單唯一標識
- userId - 關聯用戶系統
- productId - 關聯商品系統
- quantity - 購買數量
- totalAmount - 訂單總金額(使用 BigDecimal 避免精度問題)
- status - 訂單狀態(建議用枚舉類型增強可讀性)
- 時間相關字段:創建時間、支付時間、更新時間
5. 初始化函數
輸入 prompt:“初始化函數。”
靈碼編碼智能體自動生成兩個構造函數:全參數構造函數和基礎字段構造函數,包含自動初始化邏輯。
- 全參數構造函數:支持所有字段的自定義初始化
- 基礎字段構造函數:僅需提供核心業務字段即可創建訂單對象
- 智能默認值:
- 狀態字段自動初始化為?0(待支付),
- 創建時間自動設置為當前時間,
- 空值防護:對可能為 null 的參數進行了空值檢查。
6. 提供增刪改查的業務邏輯
輸入 prompt:“提供增刪改查的函數。”
靈碼編碼智能體自動創建訂單的增刪改查功能,包含以下組件:
數據訪問層(DAO):OrderDAO.java
- 創建 OrderDAO 類,包含存儲數據的 Map。
業務服務層(Service):OrderService.java
- 實現 createOrder 方法,添加新訂單。
- 實現 getOrder 方法,根據 ID 獲取訂單。
- 實現 updateOrder 方法,更新現有訂單。
- 實現 deleteOrder 方法,移除訂單。
總結:該操作的提示詞,沒有明確指明數據庫類型,AI 實現方案為提供一個簡單的 DAO 實現,模擬內存操作。在方案最后,會建議用戶將內存存儲替換為真實的數據庫持久化。
7. 數據持久化到 SQLite 數據庫中
輸入 prompt:“數據庫為 sqlite,在 test.db 中創建 order0713 訂單表。”
靈碼編碼智能體自動完成?SQLite?數據庫表創建和持久化功能,包含以下內容:
- 在 test.db 中創建了 order0713 表,字段對應 Order 類屬性
- 添加了數據庫連接工具類 DBUtil,用于獲取 SQLite 數據庫連接
- 擴展了 OrderDAO 實現數據庫持久化功能,包含表結構初始化、數據加載和保存方法
- 在 pom.xml 中添加了 SQLite JDBC 依賴和 Java 時間 API 注解支持
8. 編譯并運行
輸入 prompt:“編譯并運行。”
編譯過程中遇到各類問題,智能體自動修復。
多輪修復后,再重新編譯。
運行成功,若有問題,繼續自動修復。
9. 按企業規范生成單元測試
創建項目的 rules:
在靈碼高級設置中,添加 project_rule.md 文件。
自動添加目錄和默認文件。
按企業單測生成規范,編輯 rule 文件,如下:
選中要單測的函數,右鍵生成單元測試。
靈碼編碼智能體自動生成單測方案,方案滿足項目中定義單測的rule規范。
一、被測函數分析
被測函數:OrderService.createOrder(Order order)
該函數主要完成以下功能:
- 對訂單對象進行業務校驗:
- 檢查購買數量是否大于 0
- 檢查訂單金額是否大于 0
- 調用數據訪問層的?createOrder?方法創建訂單。
二、分支分析
正常分支:
- 訂單數量>0且訂單金額>0,調用 orderDAO.createOrder 返回 true
- 訂單數量>0且訂單金額>0,調用 orderDAO.createOrder 返回 false
異常分支:
- 訂單數量<=0,拋出 IllegalArgumentException
- 訂單金額<=0,拋出 IllegalArgumentException
三、測試用例分析
靈碼編碼智能體按以上方案生成單測用例:
10. demo 工程的架構解讀及視圖
輸入 prompt:“介紹該工程架構,技術棧,業務流程,并畫出 Plantuml 架構圖。”
靈碼編碼智能體生成:該工程是一個典型的?Java?項目,使用了?Maven?作為構建工具。項目的目錄結構遵循標準的?Maven?布局,其中?src/main/java?包含了所有的源代碼,而?src/test/java?則存放了測試代碼。項目中包含了一些基本的類如?App.java, DatabaseConnection.java, Order.java, OrderDao.java,?和?OrderService.java,以及一個測試類OrderServiceTest.java。
技術棧
- 編程語言:Java
- 構建工具:Maven
- 數據庫連接:可能使用 JDBC 或其他 ORM 框架(具體實現未給出)
- 單元測試:JUnit 5
業務流程
- App.java:可能是應用程序的入口點。
- DatabaseConnection.java:處理與數據庫的連接。
- Order.java:表示訂單的模型類。
- OrderDao.java:數據訪問對象,負責與數據庫交互以獲取或存儲訂單信息。
- OrderService.java:服務層類,可能包含業務邏輯來處理訂單。
- OrderServiceTest.java:對 OrderService 類中的方法進行單元測試。
PlantUML 架構圖
- 以下是該項目的一個簡單 PlantUML 架構圖:
輸入?prompt:“以創建訂單為例,分層介紹業務流程。”
靈碼編碼智能體生成:
注:安裝?PlantUML?插件,或者拷貝?PlantUML?代碼到?PlantUML?官網進行展示。
結束語
目前受限于模型的能力,智能體編譯運行時需要多次修復才能編譯運行通過,當出現多次不能編譯成功時,可以通過優化提示詞或人工干預做局部修改。
生成的樣例工程如下:https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/assets/0708V1unit_test_success.zip