hibernate 条件查询

使用hql的where关键字来完成,然而createCriteria查询是更具有面向对象特点的查询方式。主要使用三个类来完成:

Criteria、Criterion、Restrictions

执行方法:

(1)、获得session对象

(2)、使用session对象创建Criteria对象,该对象代表一次查询。

(3)、使用Restrictions静态方法创建Criterion的查询条件。

(4)、向Criteria中添加查询条件。

(5)、调用list()方法返回查询结果。


Restrictions静态方法:

Restrictions.eq --> equal,等于.

Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq的效果

Restrictions.gt --> great-than > 大于

Restrictions.ge --> great-equal >= 大于等于

Restrictions.lt --> less-than, < 小于

Restrictions.le --> less-equal <= 小于等于

Restrictions.between --> 对应SQL的between子句

Restrictions.like --> 对应SQL的LIKE子句

Restrictions.in --> 对应SQL的in子句

Restrictions.and --> and 关系

Restrictions.or --> or 关系

Restrictions.isNull --> 判断属性是否为空,为空则返回true

Restrictions.isNotNull --> 与isNull相反

Restrictions.sqlRestriction --> SQL限定的查询


代码实例:

本文代码中的表的model和表见hql关联和连接查询实例

1、以下代码是根据订单表的主键查询订单,条件是orderId=pk

	public Orders Query(int pk) {
		// TODO Auto-generated method stub
		SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
		Session session=sessionfactory.openSession();
		Orders order = new Orders();
		Transaction trans = null;
		List<?> list = null;
		try{
			trans = session.beginTransaction();
			list = session.createCriteria(Orders.class).add(Restrictions.eq("orderId", pk)).list();
			trans.commit();
		}catch(Exception ex){
			trans.rollback();	
			ex.printStackTrace();
			return null;
		}finally{
			if(list!= null){
				for(int i=0;i<list.size();i++){
				    order=(Orders) list.get(i);					
				}
			}
		}
		return order;
	}


 
2、以下代码是使用hql根据订单表的主键查询订单,条件是orderId=pk 
	public Orders Query(int pk) {
		// TODO Auto-generated method stub
		//查询方式一
		SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
		Session session=sessionfactory.openSession();
		Transaction trans = null;
		List<?>list=null;
		Orders order = new Orders();
		String hql="select orders from Orders orders,Goods goods where orders.orderId=:orderId";
		try{
			trans=session.beginTransaction();
			Query query = session.createQuery(hql);
			query.setInteger("orderId", pk);
			list=query.list();
			trans.commit();
		}catch(Exception ex){
			trans.rollback();			
			System.out.println("Query(int pk)根据订单Id查询订单失败");
			ex.printStackTrace();
			return null;
		}finally{
			if(list!= null){
				for(int i=0;i<list.size();i++){
					order=(Orders) list.get(i);
				}
			}
		}
		return order;	
	}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值