hibernate_day04_08_QBC查询(查询所有)和10_QBC查询(排序和分页查询)和11_QBC查询(统计和离线查询)

08_QBC查询(查询所有)


QBC查询
1 使用hql查询需要写hql语句实现,但是使用qbc时候,不需要写语句了,使用方法实现


2 使用qbc时候,操作实体类和属性


3 使用qbc,使用Criteria对象实现

查询所有
1 创建Criteria对象
2 调用方法得到结果


			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			//2 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}


 09_QBC查询(条件查询)

1 没有语句,使用封装的方法实现

			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			 criteria.add(Restrictions.eq("cid", 2));
			 criteria.add(Restrictions.eq("custName", "阿里巴巴"));
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
模糊查询:

	// 条件查询
	@Test
	public void testSelect2(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
//			 criteria.add(Restrictions.eq("cid", 2));
//			 criteria.add(Restrictions.eq("custName", "阿里巴巴"));
			
			criteria.add(Restrictions.like("custName", "%里%"));
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}

排序查询


			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			//criteria.addOrder(Order.asc("cid"));
			criteria.addOrder(Order.desc("cid"));
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();

分页查询

	// 分页
	@Test
	public void testSelect4(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			//2 设置分页数据
			//2.1设置开始位置
			//开始位置计算公式:(当前页-1)*每页记录数
			criteria.setFirstResult(0);
			//2.2设置每页显示记录数
			criteria.setMaxResults(3);
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}


统计查询

//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			criteria.setProjection(Projections.rowCount());
			
			Object obj = criteria.uniqueResult();
			Long lobj = (Long) obj;
			int count = lobj.intValue();
			System.out.println(count);




	// 统计
	@Test
	public void testSelect5(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			criteria.setProjection(Projections.rowCount());
			
			Object obj = criteria.uniqueResult();
			Long lobj = (Long) obj;
			int count = lobj.intValue();
			System.out.println(count);
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}


离线查询

//1 创建query对象
			//Criteria criteria = session.createCriteria(Customer.class);
			DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
			
			//2 最终执行的时候才需要到session
			Criteria criteria = detachedCriteria.getExecutableCriteria(session);
	


所有代码:com.hlg.hibernatetest.HibernateQBC

package com.hlg.hibernatetest;

import java.util.List;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.hlg.entity.Customer;
import com.hlg.entity.LinkMan;
import com.hlg.utils.HibernateUtils;

public class HibernateQBC {

	// 查询所有
	@Test
	public void testSelect1(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			//2 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
	
	// 条件查询
	@Test
	public void testSelect2(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
//			 criteria.add(Restrictions.eq("cid", 2));
//			 criteria.add(Restrictions.eq("custName", "阿里巴巴"));
			
			criteria.add(Restrictions.like("custName", "%里%"));
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
	
	// 排序
	@Test
	public void testSelect3(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			//criteria.addOrder(Order.asc("cid"));
			criteria.addOrder(Order.desc("cid"));
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
	
	// 分页
	@Test
	public void testSelect4(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			//2 设置分页数据
			//2.1设置开始位置
			//开始位置计算公式:(当前页-1)*每页记录数
			criteria.setFirstResult(0);
			//2.2设置每页显示记录数
			criteria.setMaxResults(3);
			
			//3 调用方法得到结果
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
	
	// 统计
	@Test
	public void testSelect5(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Criteria criteria = session.createCriteria(Customer.class);
			
			criteria.setProjection(Projections.rowCount());
			
			Object obj = criteria.uniqueResult();
			Long lobj = (Long) obj;
			int count = lobj.intValue();
			System.out.println(count);
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
	
	// 离线查询
	@Test
	public void testSelect6(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			//Criteria criteria = session.createCriteria(Customer.class);
			DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
			
			//2 最终执行的时候才需要到session
			Criteria criteria = detachedCriteria.getExecutableCriteria(session);
			
			List<Customer> list = criteria.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值