首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 從 Session 獲取用戶 ID 並用 HQL 查詢當前用戶日誌

     編輯:程式設計綜合問答

典型代碼片段

public String list() {
    int size = 7;
    User user = (User) getSession().getAttribute("curr_user");
    int userId = user.getId();
    Page<Diary> page = dairyService.find(size, number,
        "from Diary where user.id = ?", userId); // 建議使用參數綁定
    put2Request("page", page);
    return "list";
}

常見問題與修正

  1. HQL 寫法錯誤:原代碼 from Dairy where user_id = ID 中 user_id 可能不是實體屬性名。正確寫法應根據實體關聯映射,如 user.id 或 user.id = :uid。
  2. 參數傳遞方式:避免直接拼接 SQL/HQL 字串,使用 ? 佔位符或命名參數 :uid,由框架處理類型轉換與注入防護。
  3. 實體類名拼寫:確認實體類是 Diary 而非 Dairy(牛奶廠),HQL 中需使用實體類名。
  4. Session 取值安全:建議先判空 if (user != null),避免空指針異常。

最佳實踐建議

  • 在 Service 層封裝查詢邏輯,Controller 僅負責參數傳遞與結果封裝。
  • 使用分頁插件(如 PageHelper)簡化分頁代碼。
  • 考慮加入緩存策略減少資料庫壓力。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved