Hibernate模糊查詢三種方式
阿新 • • 發佈:2019-02-01
1、如果是Query query = session.createQuery("")的話,試一下去掉前面的“select *”即createQuery方法內的條件直接是“from ......”,有幾個是可以用的,因為支援部分SQL。
2、Hibernate中實現模糊查詢,可有以下三種方式:
第一種方式:QBC查詢
第二種方式:HQL查詢語句
注:Subject為資料庫表subject對映的類;它有相應的屬性subname、subinfo及相應的get和set方法;sub為Subject的一個例項化物件。
不行的話就用下面的格式(排序必用):
select OBJECT(o) from A o where o.b in(21,32)
select OBJECT(o) from A o order by o.b ASC
2、Hibernate中實現模糊查詢,可有以下三種方式:
第一種方式:QBC查詢
String name = "", info = ""; if (sub != null && sub.getSubname() != null) { name = sub.getSubname(); } if (sub != null && sub.getSubinfo() != null) { info = sub.getSubinfo(); } Criteria cr = session.createCriteria(Subject.class); cr.add(Expression.like("subname","%"+name+"%")); cr.add(Expression.like("subinfo","%"+info+"%"));
第二種方式:HQL查詢語句
String hql = "from Subject as s where s.subname like :name and s.subinfo like :info";
// 呼叫session的獲得資料列表方法,傳遞HQL查詢語句
Query query = session.createQuery(hql);
query.setString("name","%"+name+"%");
query.setString("info","%"+info+"%");
System.out.println("*********"+hql);
第三種方式:HQL查詢語句(查詢條件只能為英文或數字,漢字在傳遞到hibernate內部時出現亂碼問題 )
String hql = "from Subject as s where s.subname like '%"+name+"%' and s.subinfo like '%"+info+"%'";
//呼叫session的獲得資料列表方法,傳遞HQL查詢語句
Query query = session.createQuery(hql);
注:Subject為資料庫表subject對映的類;它有相應的屬性subname、subinfo及相應的get和set方法;sub為Subject的一個例項化物件。