用Criteria实现多条件查询

方法

说明

Restrictions.eq

Restrictions.allEq

利用Map来进行多个等于的限制

Restrictions.gt

Restrictions.ge

>=

Restrictions.lt

Restrictions.le

<=

Restrictions.between

BETWEEN

Restrictions.like

LIKE

Restrictions.in

in

Restrictions.and

and

Restrictions.or

or

Restrictions.sqlRestriction

用SQL限定查询


下面是一个例子:

@SuppressWarnings("unchecked")
	public List<AdBean> getAds(){
		
		List<AdBean> executeResult = (List<AdBean>)getHibernateTemplate().execute(
			new HibernateCallback(){//回调函数
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				
				Criteria criteria = session.createCriteria(AdBean.class);//创造criteria
				
				//这二个条件是指AdBean中的name属性和id属性的联合查
				criteria.add(Restrictions.like("name", "%your var%"));//让name和你传进来的参数相似
				criteria.add(Restrictions.eq("id", "100"));
				
				//这个是指,在AdBean中有adPositionBean这个类,然后又要要把adPosition下面的id属性来查
				criteria.createCriteria("adPositionBean").add(Restrictions.eq("id", "200"));
				
				//如果想分页,下面我是把它写死的,写活也比较容易的,自己试.
				//criteria.setFirstResult(0);
				//criteria.setMaxResults(10);
				
				//多条件添完了就可以查询了
				return criteria.list();
			}
		});
		return executeResult;
	}
	//这个方法没有传查询的条件进来,你可以把自己众多条件封装到一个类中打个包传个Bean进来.
	//当你的条件很多的时候,可以把得到criteria这个东西单独再写成一个方法,把那些个多条件的搞定了再在一信要查询的方法里调用,更加OOP
	//就是这么多了


你可能感兴趣的:(sql,bean,session,object)