hibernate查询(Query By Criteria(QBC))

hibernate 的查询方式

1 sql 

2 hql 

3 qbc

此处只介绍QBC

QBC一般的步骤是:

  • 使用Session实例的createCriteria()方法创建Criteria对象;
  • 使用工具类Restrictions的方法为Criteria对象设置查询条件,Order工具类的方法设置排序方式,Projections工具类的方法进行统计和分组;
  • 使用Criteria对象的list()方法进行查询并返回结果。

主要用到三个描述条件的对象

Restrictions,Order,Projections

Restrictions  设置查询条件

返回值类型方法名称描述
SimpleExpressionRestrictions.eq等于(equal)
CriterionRestrictions.allEq使用Map,Key/Valu进行多个等于的比对
SimpleExpressionRestrictions.gt大于(great than)
SimpleExpressionRestrictions.ge大于等于(great than or equal)
SimpleExpressionRestrictions.lt小于(less than)
SimpleExpressionRestrictions.le小于等于(less than or equal)
CriterionRestrictions.between对应SQL的between
SimpleExpressionRestrictions.like对应SQL的like
CriterionRestrictions.in对应SQL的in
LogicalExpressionRestrictions.andand关系
LogicalExpressionRestrictions.oror关系
CriterionRestrictions.isNull为空
CriterionRestrictions.sqlRestrictionSQL限定查询

Order 设置排序方式

返回值类型方法名称描述
OrderOrder.asc升序
OrderOrder.desc降序

Projections 统计和分组

返回值类型方法名称描述
AggregateProjectionProjections.avg求平均值
CountProjectionProjections.count统计某属性的数量
CountProjectionProjections.countDistinct统计某属性不同值的数量
PropertyProjectionProjections.groupProperty指定某个属性为分组属性
AggregateProjectionProjections.max求最大值
AggregateProjectionProjections.min求最小值
ProjectionListProjections.projectionList创建一个ProjectionList对象
ProjectionProjections.rowCount查询结果集中的记录条数
AggregateProjectionProjections.sum求某属性的合计

示例

1 单表查询

Criteria query  =session.createCriteria(FileTrans.class);
				query.add(Restrictions.eq("transNo", "1")); //等于 
				query.addOrder(Order.asc("id")); //排序
				query.setFirstResult(0);   
				query.setMaxResults(2); //分页查询前两条
				return query.list();

2 复合查询

Criteria clazz = session.createCriteria(FileTrans.class);
Criteria stu = clazz.createCriteria(Student.class);

stu.add(Restrictions.eq("name", "Bob"));
 return stu.list();

DetachedCriteria

DetachedCriteria  query =DetachedCriteria .forClass(FileTrans.class);
	 //设置属性时,需要注意数据类型
		query.add(Restrictions.eq("transNo", "1"));
		Criteria dc =query.getExecutableCriteria(session);
		return dc.list();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hero_孙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值