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

Hibernate HQL 查詢參數綁定錯誤修正與結果獲取方法

     編輯:程式設計疑難解答

錯誤代碼

String hql = "FROM User u WHERE u.id = " + userId; // 拼接 SQL 注入風險
Query query = session.createQuery(hql);

修正:參數綁定

// 方式 1:命名參數 (推薦)
String hql = "FROM User u WHERE u.id = :uid";
Query query = session.createQuery(hql);
query.setParameter("uid", userId);

// 方式 2:位置參數
String hql = "FROM User u WHERE u.id = ?";
Query query = session.createQuery(hql);
query.setParameter(0, userId);

結果獲取

// 單一結果
User user = (User) query.uniqueResult();

// 列表結果
List users = query.list();

// 分頁
query.setFirstResult(0);
query.setMaxResults(20);
List page = query.list();

// 投影查詢 (只選特定列)
String hql = "SELECT u.name, u.email FROM User u WHERE u.id = :uid";
List rows = query.setParameter("uid", uid).list();
for (Object[] row : rows) {
    String name = (String) row[0];
    String email = (String) row[1];
}

最佳實踐

  • 永遠使用參數綁定,防止 HQL 注入
  • 優先用命名參數,可讀性強
  • 大數據量必須分頁,避免 OOM
  • 只需部分字段用投影查詢,減少數據傳輸
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved