Hibernate- QBC-基本查询
01.環(huán)境搭建
02.基本查詢
1.方法說明
|
方法 |
說明 |
|
Restrictions.eq |
= |
|
Restrictions.allEq |
利用Map來進(jìn)行多個等于的限制 |
|
Restrictions.gt |
> |
|
Restrictions.ge |
>= |
|
Restrictions.lt |
< |
|
Restrictions.le |
<= |
|
Restrictions.between |
BETWEEN |
|
Restrictions.like |
LIKE |
|
Restrictions.in |
in |
|
Restrictions.and |
and |
|
Restrictions.or |
or |
|
Restrictions.sqlRestriction |
用SQL限定查詢 |
2,QBC常用限定方法
Restrictions.eq--> equal,等于.
Restrictions.allEq--> 參數(shù)為Map對象,使用key/value進(jìn)行多個等于的比對,相當(dāng)于多個Restrictions.eq的效果
Restrictions.gt--> great-than > 大于
Restrictions.ge--> great-equal >= 大于等于
Restrictions.lt--> less-than, < 小于
Restrictions.le--> less-equal <= 小于等于
Restrictions.between--> 對應(yīng)SQL的between子句
Restrictions.like--> 對應(yīng)SQL的LIKE子句
Restrictions.in--> 對應(yīng)SQL的in子句
Restrictions.and--> and 關(guān)系
Restrictions.or--> or 關(guān)系
Restrictions.isNull--> 判斷屬性是否為空,為空則返回true
Restrictions.isNotNull--> 與isNull相反
Restrictions.sqlRestriction--> SQL限定的查詢
Order.asc--> 根據(jù)傳入的字段進(jìn)行升序排序
Order.desc--> 根據(jù)傳入的字段進(jìn)行降序排序
MatchMode.EXACT--> 字符串精確匹配.相當(dāng)于"like 'value'"
MatchMode.ANYWHERE--> 字符串在中間匹配.相當(dāng)于"like '%value%'"
MatchMode.START--> 字符串在最前面的位置.相當(dāng)于"like 'value%'"
MatchMode.END--> 字符串在最后面的位置.相當(dāng)于"like '%value'"
01.基本操作
package com.gordon.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import com.gordon.domain.Book;
import com.gordon.utils.HibernateUtil;
/**
* QBC查詢
* @author Administrator
*
*/
public class TestQBCDemo1 {
/**
* 基本查詢
*/
@Test
public void run1() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 穿件criteria查詢接口
Criteria query = session.createCriteria(Book.class);
query.addOrder(Order.asc("price"));
query.add(Restrictions.le("price", 40.00));
List<Book> list = query.list();
for (Book book : list) {
System.out.println(book.getName());
}
transaction.commit();
}
}
02.分組查詢
/**
* 分組查詢
Hibernate:
select
this_.publisher_id as y0_,
count(*) as y1_,
sum(this_.price) as y2_
from
t_book this_
group by
this_.publisher_id
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:電子工業(yè)出版社, 圖書數(shù)量:3, 總價:155.0
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:北京大學(xué)出版社, 圖書數(shù)量:2, 總價:67.84
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:人民郵電出版社, 圖書數(shù)量:2, 總價:107.2
*/
@Test
public void run2() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 穿件criteria查詢接口
Criteria query = session.createCriteria(Book.class);
ProjectionList pList = Projections.projectionList();
pList.add(Projections.groupProperty("publisher"));
pList.add(Projections.rowCount());
pList.add(Projections.sum("price"));
query.setProjection(pList);
Publisher publisher = null;
Long count = null;
Double sum = null;
List<Object[]> list = query.list();
for (Object[] obj : list) {
publisher = (Publisher) obj[0];
count = (Long) obj[1];
sum = (Double) obj[2];
System.out.println("出版社:" + publisher.getName() + ", 圖書數(shù)量:" + count + ", 總價:" + sum);
}
transaction.commit();
}
03.聚合函數(shù)
/**
* 聚合函數(shù)
Hibernate:
select
sum(this_.price) as y0_,
min(this_.price) as y1_,
max(this_.price) as y2_,
avg(this_.price) as y3_
from
t_book this_
[330.04, 31.0, 70.0, 47.14857142857143]
*/
@Test
public void run3() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Book.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.sum("price"));
projectionList.add(Projections.min("price"));
projectionList.add(Projections.max("price"));
projectionList.add(Projections.avg("price"));
criteria.setProjection(projectionList);
List<Object[]> list = criteria.list();
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
transaction.commit();
}
總結(jié)
以上是生活随笔為你收集整理的Hibernate- QBC-基本查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC RC2中关于HtmlHelper
- 下一篇: CISSP的成长之路(九):复习信息安全