【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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值