【hibernate框架】面向对象的查询语法(QBE和QBC)

QBC和QBE


QBC:(Query By Criteria)
Criteria是Criterion的复数,是"标准、准则、约束"的意思。

用法:
@Test
public void testQBC() {
	Session session = sf.openSession();
	session.beginTransaction();
	//criterion 标准/准则/约束
	Criteria c = session.createCriteria(Topic.class) //from Topic
				 
	 .add(Restrictions.gt("id", 2)) //greater than = id > 2
	 .add(Restrictions.lt("id", 8)) //little than = id < 8
	 .add(Restrictions.like("title", "t_"))
	 .createCriteria("category")
	 .add(Restrictions.between("id", 3, 5)) //category.id >= 3 and category.id <=5
				 ;
	//DetachedCriterea
	for(Object o : c.list()) {
		Topic t = (Topic)o;
		System.out.println(t.getId() + "-" + t.getTitle());
	}
	session.getTransaction().commit();
	session.close();
	
}

测试结果:
Hibernate: 
    select
        this_.id as id2_1_,
        this_.category_id as category4_2_1_,
        this_.createDate as createDate2_1_,
        this_.title as title2_1_,
        category1_.id as id0_0_,
        category1_.name as name0_0_ 
    from
        Topic this_ 
    inner join
        Category category1_ 
            on this_.category_id=category1_.id 
    where
        this_.id>? 
        and this_.id<? 
        and this_.title like ? 
        and category1_.id between ? and ?

QBE:(Query By Example)
QBE是QBC的一部分
//is empty and is not empty
	//query by criteria query by example
	@Test
	public void testQBE() {
		Session session = sf.openSession();
		session.beginTransaction();
		Topic tExample = new Topic();
		tExample.setTitle("T_");
		
		Example e = Example.create(tExample)
					.ignoreCase().enableLike();
		Criteria c = session.createCriteria(Topic.class)
					 .add(Restrictions.gt("id", 2))
					 .add(Restrictions.lt("id", 8))
					 .add(e)
					 ;
					 
		
		for(Object o : c.list()) {
			Topic t = (Topic)o;
			System.out.println(t.getId() + "-" + t.getTitle());
		}
		session.getTransaction().commit();
		session.close();
		
	}

转载请注明出处:http://blog.csdn.net/acmman/article/details/43937517

你可能感兴趣的:(Hibernate,HQL,qbc,EJBQL,QBE)