日期:2014-05-18  浏览次数:20842 次

hibernate如何查询多条件 ,且条件数不定的方法
要求:页面上详细查询条件有10条,所有都可以不添,为全查。   按照客户添的条件在后台查找符合全部要求的数据。   因为我刚学hibernate   所以问一下有什么方法可以实现这种查询吗???

表的映射和关联已配好。   我现在在service层用无数个判断条件来判断怎么查询,但这种方法太影响效率。请问hibernate有方便的方法吗?   例如ibatis里的isNotEmpty.

------解决方案--------------------
可以用反射获取pojo的所有字段和类型以及值,然后根据类型和值动态拼凑字符串,不过这个效率会有一点影响!
------解决方案--------------------
mark
------解决方案--------------------
使用QBC动态查询:

import org.hibernate.Criteria;
import org.hibernate.Query;

Session session=HibernateSessionFactory.currentSession();
//QBC(Query by Criteria)动态查询 �𗘗
Criteria crit=session.createCriteria(Team.class);

//如果相应属性不为空,则按相应属性查询
if(stuName!=null){
crit.add(Restrictions.like( "stuName ",stuName,MatchMode.ANYWHERE));
}
if(oldTeamName!=null){
crit.add(Restrictions.like( "oldTeamName ",oldTeamName,MatchMode.ANYWHERE));
}
if(applyDate!=null){
crit.add(Restrictions.like( "applyDate ",applyDate,MatchMode.ANYWHERE));
}
if(examineState!=null){
crit.add(Restrictions.like( "examineState ",examineState,MatchMode.ANYWHERE));
}

====================================
这是一个例子,参考一下