參考:
http://openhome.cc/Gossip/HibernateGossip/CriteriaBasic.html
範例:
1.add()
- org.hibernate.criterion.Criteria 實例代表著一個條件,您要使用org.hibernate.Criteria的add()方法加入這些條件實例,例如查詢” age”大於20且小於40的資料
- 使用add()時,預設是使用and來組合條件
- gt()大於 lt小於
Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.gt("age", new Integer(20))); criteria.add(Restrictions.lt("age", new Integer(40))); List users = criteria.list();
2.or()
- age等於(eq)20或(or)age為空(isNull)的條件
Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.or( Restrictions.eq("age", new Integer(20)), Restrictions.isNull("age") )); List users = criteria.list();
3.like()
- 查詢"name"中名稱為"just"開頭的資料:
Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.like("name", "just%")); List users = criteria.list();
4.in()
- 條件要放 『陣列 [] 』
String[] queryArray = {"John", "Ian"} criteria.add(Restrictions.in(columnName, queryArray)); // 使用criteria columnName要放『物件的名稱』not 欄位名稱
5.between()
- 要注意型態問題(ex. timestamp)
Criteria criteria = session.createCriteria(AuditTrail.class); criteria.add(Restrictions.between("auditDate", sDate, eDate));
6.Restrictions的幾個常用限定查詢方法如下表所示:
方 法 | 說 明 |
Restrictions.eq | 等於 |
Restrictions.allEq | 使用Map,使用key/value進行多個等於的比對 |
Restrictions.gt | 大於 > |
Restrictions.ge | 大於等於 >= |
Restrictions.lt | 小於 < |
Restrictions.le | 小於等於 <= |
Restrictions.between | 對應SQL的BETWEEN子句 |
Restrictions.like | 對應SQL的LIKE子句 |
Restrictions.in | 對應SQL的in子句 |
Restrictions.and | and關係 |
Restrictions.or | or關係 |
Restrictions.sqlRestriction | SQL限定查詢 |
沒有留言:
張貼留言