Hibernate Criteria 和 Query 使用比较

Hibernate Criteria 和 Hibernate Query 查询方式比较:

这个写的不是很很详细,仅供参考。

Hibernate Criteria:
1,获取session:
private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
    return this.sessionFactory;
  }

  public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
  }
 
  protected Session getSession() {
  Session session = this.sessionFactory.getCurrentSession();
  return session;
  }
 
2,获取Criteria实例:
Criteria cta = this.getSession.createCriteria(UpgradeRecord.class);
cta.setFirstResult(1); //分页
cta.setMaxResults(20);

cta.createCriteria("plan").add(Expression.idEq(sid)); //第一种查询方式
cta.createCriteria("plan").add(Expression.eq("ResourceName",resourceName)); //第二种查询方式
Criterion in= Expression.in("status",status); //第三种查询方式
cta.add(in);
cta.addOrder(Order.desc("LastModifyedTime")); //排序方式

3,获取结果:
cta.list();

Hibernate HQL:
1,
StringBuffer hql=new StringBuffer("from UpgradeRecord r where 1=1");
2
hql.append(" and r.plan.id="+condition.getPlan_id());
3
hql.append(" and r.plan.ResourceName='"+condition.getPlan_str()+"'");
4
hql.append(" and (r.status in("+st.toString()+"))");
5
int total=(Integer)this.getSession().createQuery(hql.toString()).uniqueResult();//查询数量
6
this.getSession().createQuery(hql.toString()).setFirstResult(1).setMaxResults(20).list();//查询结果并分页

注释:Query接口的uniqueResult()方法:
1,如果有多个值抛错;
2,如果有值且只有一个,返回一个object;
3,如果没值,返回null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值