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

ASP.NET 多條件查詢:使用 HQL IN 子句實現防偽碼批次查詢

     編輯:程式設計綜合問答

問題場景

前端輸入多個防偽碼(逗號分隔),後端需一次查詢並顯示所有符合條件的記錄。單一查詢正常,多條件失敗。

解決方案:HQL/JPQL IN 子句

// 後端接收字串
String codes = request.getParameter("codes"); // 如 "A001,A002,A003"

// 分割並去重
String[] arr = codes.split(",");
Set codeSet = new HashSet<>(Arrays.asList(arr));

// 建構 HQL
String hql = "FROM AntiFakeEntity WHERE code IN (:codes)";
Query query = session.createQuery(hql);
query.setParameterList("codes", codeSet); // Hibernate 自動展開 IN 列表

List results = query.list();

關鍵點

  • setParameterList 自動處理集合轉 IN (?,?,...),防止 SQL 注入。
  • 若使用原生 SQL,請用 PreparedStatement 動態產生佔位符 IN (?,?,?) 並逐一 setString。
  • 前端建議限制單次查詢數量(如 ≤ 100),避免 SQL 過長或效能下降。

總結

後端接收逗號分隔字串 → 分割去重 → 使用 IN (:paramList) 參數化查詢 → 返回列表 → 前端迴圈顯示。簡單、安全、高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved