廢話不多說(shuō),直接放代碼,交互方式:
第一種,適合sql語(yǔ)言水平比較高的人用
第二種,矮油,偶sql語(yǔ)言水平有點(diǎn)欠缺,用這個(gè)吧,""內(nèi)是表格的字段名,這里千萬(wàn)要注意,字段名要和hbm.xml文件中字段名大小寫(xiě)一致。
另外簡(jiǎn)單介紹一下QBC運(yùn)算符
常用的幾個(gè)方法:分頁(yè):setFirstResult(num),從第num條記錄開(kāi)始,setMaxResults(num),總共num條記錄。
查詢:list();
另外還有排序
最后,還是建議用Hibernate官方推薦的HQL查詢方式。
第一種,適合sql語(yǔ)言水平比較高的人用
HQL(Hibernate Query Language)
面向?qū)ο蟮牟樵冋Z(yǔ)言,與SQL不同,HQL中的對(duì)象名是區(qū)分大小寫(xiě)的(除了JAVA類和屬性其他部分不區(qū)分大小寫(xiě));HQL中查的是對(duì)象而不是和表,并且支持多態(tài);HQL主要通過(guò)Query來(lái)操作,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 }
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語(yǔ)言水平有點(diǎn)欠缺,用這個(gè)吧,""內(nèi)是表格的字段名,這里千萬(wàn)要注意,字段名要和hbm.xml文件中字段名大小寫(xiě)一致。
Criteria
Criteria是一種比HQL更面向?qū)ο蟮牟樵兎绞剑籆riteria的創(chuàng)建方式:
Criteria crit = session.createCriteria(DomainClass.class);
簡(jiǎn)單屬性條件如:criteria.add(Restrictions.eq(propertyName, value)), 這個(gè)Restrictions.eq就是QBC運(yùn)算符
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 }
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 }
另外簡(jiǎn)單介紹一下QBC運(yùn)算符
= 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() 等于列表中的某一個(gè)值
ont in(列表) Restrictions.not(Restrictions.in())不等于列表中任意一個(gè)值
between x and y Restrictions.between() 閉區(qū)間xy中的任意值
not between x and y Restrictions.not(Restrictions..between()) 小于值X或者大于值y
常用的幾個(gè)方法:
查詢: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();
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查詢方式。
此文部分內(nèi)容來(lái)源網(wǎng)絡(luò)。如有侵犯您的版權(quán)問(wèn)題,請(qǐng)來(lái)消息至電子郵件DyEngima&163.com(&換成@),經(jīng)核實(shí)后會(huì)在文章內(nèi)部標(biāo)明來(lái)源。
轉(zhuǎn)載請(qǐng)注明來(lái)源http://www.aygfsteel.com/DyEnigma/簽名:有能力、有擔(dān)當(dāng)、有情義的人才能稱之為男人,而不是由性別決定。