2016年12月19日 星期一

Hibernate Criteria - DQL

Hibernate - Criteria

參考:
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.andand關係
Restrictions.oror關係
Restrictions.sqlRestrictionSQL限定查詢

沒有留言:

張貼留言