Hibernate对象关系的QBC的几种查询方法

本文介绍了Hibernate对象关系映射中QBC方式的查询技术,包括基本查询、分组查询、利用内置聚集函数、组合查询及分页查询等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate对象关系的QBC的几种查询方法:

基本查询,分组查询,使用内置聚集函数,组合查询,分页查询

import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

import javax.persistence.Query;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

import javassist.expr.NewArray;

public class test {

	public static void main(String[] args) {
//		Type type = new Type();
//		ProductInfo productInfo = new ProductInfo();
//		productInfo.setId(111);
//		productInfo.setCode("111");
//		productInfo.setName("111");
//		type.setId(111);
//		type.setName("222");
//		
//		type.getPis().add(productInfo);
//		productInfo.setType(type);
		
		
		
		// 生成Configuration实例并进行初始化
        Configuration cfg = new Configuration().configure();

        // 从Configuration实例中获取SessionFactory
        SessionFactory sf = cfg.buildSessionFactory();

        // 打开一个Session,准备数据库读写操作
        Session session = sf.openSession();
        Transaction tx = null;
        try {
            // 定义事务
            tx = session.beginTransaction();
            // 保存班级信息,并且级联保存学生信息
            //session.save(type);
//            简单查询
//            List result = session.createQuery("from ProductInfo").list();
//            for (Iterator iter = result.iterator(); iter.hasNext();){
//                ProductInfo p = (ProductInfo) iter.next();
//                System.out.println(p.getId()+" "+p.getName()+" "+p.getCode()+" "+p.getType());
//            }
            
            //投影查询(属性查询)
//            List result = session.createQuery("select code,name from ProductInfo order by name asc").list();
//            for (Iterator iter = result.iterator(); iter.hasNext();) {
//            	Object[] obj = (Object[])iter.next();
//                System.out.println(obj[0]+" "+obj[1]);
//			}
            
            //聚集查询
//            List list= session.createQuery("select count(P.price),min(P.price),max(P.price),sum(P.price),avg(P.price) from ProductInfo P").list();
//            for (Iterator iter = list.iterator(); iter.hasNext();) {
//            	Object[] result = (Object[]) iter.next();
//            		System.out.println(result[0]+" "+result[1]+" "+result[2]+" "+result[3]+" "+result[4]);
//            }
            
            //分组查询
//            List list= session.createQuery("select count(P.type) from ProductInfo P group by P.type").list();
//            for (Iterator iter = list.iterator(); iter.hasNext();) {
//            	Long result = (Long) iter.next();
//            		System.out.println(result);
//            }
            
            //动态实例查询
//            List list= session.createQuery("select new ProductInfo(p.code,p.name) from ProductInfo p order by p.name asc").list();
//            for (Iterator iter = list.iterator(); iter.hasNext();) {
//            	ProductInfo result = (ProductInfo) iter.next();
//            		System.out.println(result.getCode()+"  "+result.getName());
//            }
            //分页查询
//            Query query= session.createQuery("from ProductInfo");
//            query.setFirstResult(0);
//            query.setMaxResults(3);
//            List list = ((org.hibernate.query.Query) query).list();
//            for (Iterator iter = list.iterator(); iter.hasNext();) {
//            	ProductInfo result = (ProductInfo) iter.next();
//            	System.out.println(result.getId()+" "+result.getName()+" "+result.getCode());
//            }
            //条件查询
//            Iterator iter = session.createQuery("select p.id,p.name,p.code from ProductInfo p where p.type=:ID").setInteger("ID", 1).iterate();
//            while(iter.hasNext()) {
//            	Object[] result = (Object[]) iter.next();
//            	System.out.println(result[0]+" "+result[1]+" "+result[2]+" ");
//            }
            //QBC简单查询
//            Criteria crit = session.createCriteria(ProductInfo.class);
//            Criterion cond = Restrictions.eq("id",new Integer(1));
//            crit.add(cond);
//            List results = crit.list();
//            for (Iterator iter = results.iterator();iter.hasNext();) {
//				ProductInfo pr = (ProductInfo)iter.next();
//				System.out.println(pr.getId()+" "+pr.getName()+" ");
//			}
            //QBC分组查询
//            Criteria crit = session.createCriteria(ProductInfo.class);
//            crit.setProjection(Projections.groupProperty("type"));
//            List list = crit.list();
//            Iterator it = list.iterator();
//            while(it.hasNext()){
//            	Type pr = (Type)it.next();
//            	System.out.println(pr.getId()+" "+pr.getName()+" ");
//            }
            //QBC使用内置函数集查询
//            Criteria crit = session.createCriteria(ProductInfo.class);
//            crit.setProjection(Projections.avg("price"));
//            List list = crit.list();
//            Iterator it = list.iterator();
//            while(it.hasNext()){
//            	System.out.println(it.next().toString());
//            }
            //QBC组合查询
//	          Criteria crit = session.createCriteria(ProductInfo.class);
//	          Criterion dis = Restrictions.disjunction()
//	        		  .add(Restrictions.like("name","巴%"))
//	        		  .add(Restrictions.like("name", "全%"));
//	          crit.add(Restrictions.conjunction()
//	        		  .add(Restrictions.ge("id",1))
//	        		  .add(dis));
//	          ProjectionList projectionList = Projections.projectionList();
//	          projectionList.add(Projections.property("id"));
//	          projectionList.add(Projections.property("name"));
//	          crit.setProjection(projectionList);
//	          List list = crit.list();
//	          Iterator it = list.iterator();
//	          while(it.hasNext()){
//	        	  Object[] re = (Object[])it.next();
//	          	System.out.println(re[0]+" "+re[1]);
//	          }
            //QBC关联查询
//            Criteria crit = session.createCriteria(ProductInfo.class);
            //QBC分页查询
//          Criteria crit = session.createCriteria(ProductInfo.class);
//          Criterion cond = Restrictions.eq("id",new Integer(1));
//          crit.add(cond);
//          System.out.println("请分别输入第一条数据的位置和一页显示的数据个数:");
//          Scanner sc = new Scanner(System.in);
//          Scanner sc1 = new Scanner(System.in);
//          int firstD = sc.nextInt();
//          int maxR = sc1.nextInt();
//          crit.setFirstResult(firstD);
//          crit.setMaxResults(maxR);
//          List results = crit.list();
//          for (Iterator iter = results.iterator();iter.hasNext();) {
//				ProductInfo pr = (ProductInfo)iter.next();
//				System.out.println(pr.getId()+" "+pr.getName()+" ");
//			}
//          System.out.println("请输入你要跳转的页面:");
//          Scanner sc2 = new Scanner(System.in);
//          int pageNum = sc2.nextInt();
//          int firstData = firstD + pageNum * maxR;
//          crit.setFirstResult(firstData);
//          crit.setMaxResults(maxR);
//          for (Iterator iter = results.iterator();iter.hasNext();) {
//				ProductInfo pr = (ProductInfo)iter.next();
//				System.out.println(pr.getId()+" "+pr.getName()+" ");
//			}
            // 事务提交
            tx.commit();
        } catch (Exception e) {
            if (tx != null) {
                // 回滚事务
                tx.rollback();
            }
            e.printStackTrace();
        } finally {
            // 关闭Session
            session.close();
        }

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值