iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
自我挑戰組

飲食營養追蹤 + 健康分析 Web 系統系列 第 15

新增食物名稱跟其資訊

  • 分享至 

  • xImage
  •  

目的

原本新增記錄那只能用foodId,我想改為能新增食物名稱、熱量、蛋白質、脂肪、碳水、 份量。
需要新建class Food、FoodDAO。

1.新增class
在dao資料夾新增class FoodDAO,在model資料夾新增class Food。
https://ithelp.ithome.com.tw/upload/images/20251014/20178845o9cNzCeS2U.jpg


2.class Food
先宣告food表的欄位。
初始化物件,在建立物件時會自動被呼叫(一定要跟類別名一樣,且不會回傳)
寫每個欄位的getter、setter供外部程式讀取或修改。
https://ithelp.ithome.com.tw/upload/images/20251014/20178845K4SnP06w6t.jpg
https://ithelp.ithome.com.tw/upload/images/20251m014/20178845oWrIRIB9SI.jpg


3.FoodDAO
建立方法getOrCreateFoodIdByName,丟入前面宣告過的參數,丟出例外不在這執行。

int foodId = -1:初始化foodId為-1,找不到回傳-1。

SELECT food_id FROM food WHERE name=?:從food表找food_id,條件為name=?。

foodId = rs.getInt("food_id):從結果讀food_id的值,存在foodId變數。

Statement.RETURN_GENERATED_KEYS:在執行完INSERT後取得資料庫自動產生的主鍵值(food_id)。

ResultSet keys = insertStmt.getGeneratedKeys:從剛剛執行結果中,取出資料庫自動產生的主鍵。ResultSet是JDBC中查詢結果集的資料型態。

foodId=keys.getInt(1):取出結果中的第1個欄位的整數值(自動生成的主鍵)存入foodId。
最後回傳foodId。
https://ithelp.ithome.com.tw/upload/images/20251014/20178845FfH45mbavy.jpg
https://ithelp.ithome.com.tw/upload/images/20251014/20178845Lzlo6EpboJ.jpg


4.FoodLogDAO
只放新增程式碼截圖。
step1:
addFoodLog:新加入calories、protein、fat、carb參數。

如果有讀到資料就代表食物已存在food資料表,將找到的food_id存入foodId。

沒有食物記錄就在food插入新資料,下面與前面講過的一樣。
step2:
這裡只改印出食物名稱、舊份量+份量=新份量。
https://ithelp.ithome.com.tw/upload/images/20251014/20178845vABcA5mIcs.jpg
https://ithelp.ithome.com.tw/upload/images/20251014/20178845lwMxudYVpk.jpg


5.Main
新增輸入食物名、熱量、、蛋白質、脂肪、碳水並加上錯誤處理。

double calories = Double.parseDouble(calStr):把字串轉成double型態的數值,並存進變數calories。

int foodId=food_dao.grtOrCreateFoodIdByName:呼叫方法,放入參數,如果資料庫原本就有這個食物會回傳那筆的id,沒有就會回傳新的id,將回傳的值存入變數foodId。
其他的程式碼之前有寫過。
https://ithelp.ithome.com.tw/upload/images/20251014/2017884501UXyeEhqx.jpg
https://ithelp.ithome.com.tw/upload/images/20251014/20178845SRHupv23Nw.jpg
https://ithelp.ithome.com.tw/upload/images/20251014/20178845tk08b5xWbQ.jpg


6.結果
https://ithelp.ithome.com.tw/upload/images/20251014/20178845Qtff4UbhuZ.jpg
https://ithelp.ithome.com.tw/upload/images/20251014/20178845l6X6h60MfY.jpg


上一篇
計算單日蛋白質、脂肪、碳水的功能。
下一篇
查詢每日營養統計功能
系列文
飲食營養追蹤 + 健康分析 Web 系統16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言