廢話不多說,直接放代碼,交互方式:

第一種,適合sql語言水平比較高的人用

HQL(Hibernate Query Language)
面向對象的查詢語言,與SQL不同,HQL中的對象名是區(qū)分大小寫的(除了JAVA類和屬性其他部分不區(qū)分大小寫);HQL中查的是對象而不是和表,并且支持多態(tài);HQL主要通過Query來操作,Query的創(chuàng)建方式:
Query q = session.createQuery(hql);
eg: from Person
        from User user where user.name=:name
        from User user where user.name=:name and user.birthday < :birthday

 1 @SuppressWarnings("unchecked")
 2 @Override
 3 @Transactional(propagation = Propagation.NOT_SUPPORTED)
 4 public List<User> check(String username, String email, String peopleId) {
 5     String hql = "from User where username=:uName or email=:email or peopleId=:PID";
 6     Query q = factory.getCurrentSession().createQuery(hql);
 7     q.setString("uName", username);
 8     q.setString("email", email);
 9     q.setString("PID", peopleId);
10     List list = q.list();
11     return list;
12 }

第二種,矮油,偶sql語言水平有點欠缺,用這個吧,""內是表格的字段名,這里千萬要注意,字段名要和hbm.xml文件中字段名大小寫一致。

Criteria
Criteria是一種比HQL更面向對象的查詢方式;Criteria的創(chuàng)建方式:
Criteria crit = session.createCriteria(DomainClass.class);
簡單屬性條件如:criteria.add(Restrictions.eq(propertyName, value)), 這個Restrictions.eq就是QBC運算符
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))

 1 @SuppressWarnings("unchecked")
 2 @Override
 3 @Transactional(propagation = Propagation.NOT_SUPPORTED)
 4 public List<User> check(String username, String email, String peopleId) {
 5     Criteria c = factory.getCurrentSession().createCriteria(User.class);
 6     c.add(Restrictions.or(Restrictions.eq("userName", username),
 7             Restrictions.or(Restrictions.eq("email", email), Restrictions
 8                 .eq("peopleId", peopleId))));
 9     List list = c.list();
10     return list;
11 }

另外簡單介紹一下QBC運算符

= Restrictions.eq() 等于 
<> Restrictions.not(Exprission.eq()) 不等于 
> Restrictions.gt() 大于 
>= Restrictions.ge() 大于等于 
< Restrictions.lt() 小于 
<= Restrictions.le() 小于等于 
is null Restrictions.isnull() 等于空值 
is not null Restrictions.isNotNull() 非空值 
like Restrictions.like() 字符串模式匹配 
and Restrictions.and() 邏輯與 
and Restrictions.conjunction() 邏輯與 
or Restrictions.or() 邏輯或 
or Restrictions.disjunction() 邏輯或 
not Restrictions.not() 邏輯非 
in(列表) Restrictions.in() 等于列表中的某一個值 
ont in(列表) Restrictions.not(Restrictions.in())不等于列表中任意一個值 
between x and y Restrictions.between() 閉區(qū)間xy中的任意值 
not between x and y Restrictions.not(Restrictions..between()) 小于值X或者大于值y 

常用的幾個方法:
分頁:setFirstResult(num),從第num條記錄開始,setMaxResults(num),總共num條記錄。
查詢:list();

另外還有排序

 1 List cats = sess.createCriteria(Cat.class)
 2     .add( Restrictions.like("name""F%")
 3     .addOrder( Order.asc("name") )
 4     .addOrder( Order.desc("age") )
 5     .setMaxResults(50)
 6     .list();
 7 List cats = sess.createCriteria(Cat.class)
 8     .add( Property.forName("name").like("F%") )
 9     .addOrder( Property.forName("name").asc() )
10     .addOrder( Property.forName("age").desc() )
11     .setMaxResults(50)
12     .list();

最后,還是建議用Hibernate官方推薦的HQL查詢方式。


      此文部分內容來源網(wǎng)絡。如有侵犯您的版權問題,請來消息至電子郵件DyEngima&163.com(&換成@),經(jīng)核實后會在文章內部標明來源。
轉載請注明來源http://www.aygfsteel.com/DyEnigma/
簽名:有能力、有擔當、有情義的人才能稱之為男人,而不是由性別決定。