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

Struts2+Hibernate 動態 HQL 構建解析:根據 Map 條件拼接 Where 子句

     編輯:程式設計綜合問答

代碼邏輯解析

輸入 Map<String, Object[]> map,Key 為實體屬性名,Value 為 {值, 類型}("1"=模糊,"0"=精確)。

拼接流程

  1. 基礎 HQL:select count(model) from Client model
  2. 遍歷 Map:
    • 首個條件加 where,後續加 and。
    • 模糊查詢:model.prop like :_prop
    • 精確查詢:model.prop = :_prop
  3. 生成命名參數 HQL,再 query.setParameter("_prop", value) 綁定值(防注入)。

具體例子

Map map = new HashMap<>();
map.put("name", new Object[]{"張三", "1"}); // 模糊
map.put("status", new Object[]{"1", "0"});  // 精確

// 生成 HQL:
select count(model) from Client model
where model.name like :_name and model.status = :_status

優點與注意

  • 命名參數(:_prop)避免 SQL 注入,利於 Hibernate 緩存查詢計劃。
  • 動態條件構建適用於通用查詢頁面,但複雜關聯查詢建議改用 Criteria API 或原生 SQL。
  • 需處理值為 null、集合(in)、範圍(between)等擴展類型。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved