日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Hibernate- QBC-基本查询

發布時間:2023/12/13 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 Hibernate- QBC-基本查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01.環境搭建

02.基本查詢

1.方法說明

方法

說明

Restrictions.eq

Restrictions.allEq

利用Map來進行多個等于的限制

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--> 參數為Map對象,使用key/value進行多個等于的比對,相當于多個Restrictions.eq的效果

Restrictions.gt--> great-than > 大于

Restrictions.ge--> great-equal >= 大于等于

Restrictions.lt--> less-than, < 小于

Restrictions.le--> less-equal <= 小于等于

Restrictions.between--> 對應SQL的between子句

Restrictions.like--> 對應SQL的LIKE子句

Restrictions.in--> 對應SQL的in子句

Restrictions.and--> and 關系

Restrictions.or--> or 關系

Restrictions.isNull--> 判斷屬性是否為空,為空則返回true

Restrictions.isNotNull--> 與isNull相反

Restrictions.sqlRestriction--> SQL限定的查詢

Order.asc--> 根據傳入的字段進行升序排序

Order.desc--> 根據傳入的字段進行降序排序

MatchMode.EXACT--> 字符串精確匹配.相當于"like 'value'"

MatchMode.ANYWHERE--> 字符串在中間匹配.相當于"like '%value%'"

MatchMode.START--> 字符串在最前面的位置.相當于"like 'value%'"

MatchMode.END--> 字符串在最后面的位置.相當于"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=?
	出版社:電子工業出版社, 圖書數量:3, 總價:155.0
	Hibernate: 
	    select
	        publisher0_.id as id1_1_0_,
	        publisher0_.name as name2_1_0_ 
	    from
	        t_publisher publisher0_ 
	    where
	        publisher0_.id=?
	出版社:北京大學出版社, 圖書數量:2, 總價:67.84
	Hibernate: 
	    select
	        publisher0_.id as id1_1_0_,
	        publisher0_.name as name2_1_0_ 
	    from
	        t_publisher publisher0_ 
	    where
	        publisher0_.id=?
	出版社:人民郵電出版社, 圖書數量: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() + ", 圖書數量:" + count + ", 總價:" + sum);
	}
	
	transaction.commit();
}

03.聚合函數

/**
 * 聚合函數
	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();
}

總結

以上是生活随笔為你收集整理的Hibernate- QBC-基本查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。