Hibernate中的QBC查询

QBC查询

QBC:Query By Criteria条件查询.面向对象的查询的方式.

QBC简单查询

// 简单查询:
		List<Customer> list = session.createCriteria(Customer.class).list();
		for (Customer customer : list) {
			System.out.println(customer);
		}
 

 

QBC分页查询

Criteria criteria = session.createCriteria(Order.class);
		criteria.setFirstResult(10);
		criteria.setMaxResults(10);
		List<Order> list = criteria.list();
 

QBC排序查询

Criteria criteria = session.createCriteria(Customer.class);
//		criteria.addOrder(org.hibernate.criterion.Order.asc("age"));
		criteria.addOrder(org.hibernate.criterion.Order.desc("age"));
		List<Customer> list = criteria.list();
 


QBC条件查询

// 按名称查询:
		/*Criteria criteria = session.createCriteria(Customer.class);
		criteria.add(Restrictions.eq("cname", "tom"));
		List<Customer> list = criteria.list();*/
		
		// 模糊查询;
		/*Criteria criteria = session.createCriteria(Customer.class);
		criteria.add(Restrictions.like("cname", "t%"));
		List<Customer> list = criteria.list();*/
		
		// 条件并列查询
		Criteria criteria = session.createCriteria(Customer.class);
		criteria.add(Restrictions.like("cname", "t%"));
		criteria.add(Restrictions.ge("age", 35));
		List<Customer> list = criteria.list();

 
 

QBC离线查询

l  DetachedCriteria 离线查询对象,不需要使用Session就可以拼凑查询条件。

一般使用在web层或service层拼凑。将此对象传递给dao层,此时将与session进行绑定执行查询。

l  离线查询条件与QBC一样的。

 
@Test
	public void demo10(){
		/* 10 离线查询
		 */
		
		//web & service
		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
		detachedCriteria.add(Restrictions.eq("cid", 1));
		
		//---------------dao
		
		Session session = factory.openSession();
		session.beginTransaction();
		
		// 离线Criteria 与session绑定
		Criteria criteria = detachedCriteria.getExecutableCriteria(session);
		List<Customer> allCustomer = criteria.list();
		System.out.println(allCustomer.size());
		
		session.getTransaction().commit();
		session.close();
	}

 
 
case:
package com.hcx.d_qbc;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.hcx.domain.Customer;
import com.hcx.utils.HibernateUtils;
//QBC 离线查询
public class Demo {
	@Test
	public void fun1(){
		//Service层
			DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
			dc.add(Restrictions.eq("id", 1));
		//-------------------------------------------------
		Session session = HibernateUtils.openSession();
		session.beginTransaction();
		//------------------------------------------------
		Criteria c = dc.getExecutableCriteria(session);
		
		System.out.println(c.list());
		//------------------------------------------------
		session.getTransaction().commit();
		session.close(); // 游离状态
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值