Hibernate實現模糊查詢

大家都知道使用本地SQL進行模糊查詢用關鍵字 LIKE 對於在Hibernate裏怎麼實現呢?

  js 空格。

一、綁定參數法:

Sql代碼  
Session session=HibernateUtil.getSessionFactory
().getCurrentSession();
session.beginTransaction();
String strSQL="from Classes as a where a.classno like :name";
Query query = session.createQuery(strSQL);
query.setString("name", "%"+OId+"%");
List result=query.list();
 

 二、在面向對象的查詢語言 HQL 中

Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
   
session.beginTransaction();
 
List result=session.createQuery("from Classes as a where a.classno 
like " '%"+OId+"%'").list();

三、模糊查詢參數化

Session session=HibernateUtil.getSessionFactory().getCurrentSession();
 
session.beginTransaction();
 
List result=session.createQuery("from Classes as a where a.classno  
like :name").setParameter("pid",OId).list();

Hibernate模糊查詢參數化的問題

from Project o where 1=1 and o.isDeleted=? and o.prjName like ?; query.setString(i, "%"+實際查詢條件+"%"); 注意參數中第一個百分號的左邊與第二個百分號的右邊都沒有單引號,這和平時寫SQL語句是不同的,要特別關注一下。另外還應該瞭解一下倆點的區別

HQL:from Project o where 1=1 and PRJ_NAME like '%strCond%';//這裏PRJ_NAME 應該是數據庫表中的實際字段名

HQL:from Project o where 1=1 and o.PRJ_NAME like '%strCond%';//這裏PRJ_NAME 應該是實體類的屬性名

HQL:from Project o where 1=1 and PRJ_NAME like '?';//這裏的?不視爲佔位參數HQL:from Project o where 1=1 and PRJ_NAME like ?;//設置參數值時會自動在參數值兩邊加上單引號。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章