hibernate中的QBC语句

Query By Criteria 条件查询,一种更加面向对象化的查询方式,常用于多条件组合查询,

1.简单查询 查类所映射表中的所有纪律
Criteria criteria = session.createCriteria(类名.class);
List<类名> list = criteria.list();
for(类名 a : list){
syso(a);
}

2.排序查询
Criteria criteria = session.createCriteria(类名.class);
criteria.addOrder(Order.asc(“属性名”));//按照属性值升序or Order.desc("")
Criteria criteria = session.createCriteria(类名.class);
for(){}
3.分页查询
Criteria criteria = session.createCriteria(类名.class);
criteria.setFirstResult(0);//初始位置,可动态
criteria.setMaxResults(10);//一次显示几个
List<类名> list = criteria.list();
for(){}
4.条件查询
// 设置条件:
/**Restrictions管制,约束
* = eq
* > gt Greater than
* >= ge Greater equal
* < lt less than
* <= le less equal
* <> ne not equal
* like
* in
* and
* or
*/
Criteria criteria = session.createCriteria(类名.class);
criteria.add(Restrictions.eq(“属性名”,“属性值”));查询指定属性名中取值为指定属性值的记录
List<类名> list = criteria.list();
for(){}

其他and:criteria.add(Restrictions.like("属性名","属性值%"));可以与eq等并列 where a and b
其他or:criteria.add(Restrictions.or(Restrictions.like("属性名","属性值%"));where a or b

5.统计查询
/**
* add :普通的条件。where后面条件
* addOrder :排序
* setProjection :聚合函数 和 group by having
*/

Criteria criteria = session.createCriteria(类名.class);
criteria.setProjection(Projection.rowCount());
Long num =   ( Long ) criteria.uniqueResult();

//发送的是select count(*)语句

6.离线条件查询(SSH)Detached 分离的 Criteria规范
//在web层设置离线查询,可以避免dao层拼接过多的sql语句,也可以避免传递过多参数,例如按价格区间查询
//使用DetachedCriteria --离线(脱离session使用)
DetachedCriteria dc = DetachedCriteria.forClass(类名,class);
//设置条件
dc.add(Restrictions.eq());
service.query(dc)

//在service层 dao.query(dc)

//在dao层 fun(dc){
		//绑定session后获得criteria对象(传入的参数dc获得能执行的criteria对象,并且需要与当前线程绑定)
		Criteria criteria = dc.getExcuteableCriteria(session);
		criteria.list();
	}
	fun(dc){同上}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值