hibernate中Criteria实现复合条件查询
程序员文章站
2022-04-15 22:10:05
...
分页查询+多条件查询
分页查询+多条件查询,使用Criteria查询,逻辑清楚而且方便,避免了过多的if else 语句。以下代码中因为查询结果要进行分页,多以将每页数据和查询总数封装到map中传到前台,以供前台bootstrap-table插件使用
public Map<String, List> dataByPageItem(int pageNow, int pageSize, String searchText, String flag,String jurisdiction, String severity) {
// TODO Auto-generated method stub
Map myMap = new HashMap<String, List>();
Integer total;
// 所有item数据分页
Session session = this.getSessionSelf();
Criteria crit = session.createCriteria(Item.class);
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);//解决查询处理的数据重复的问题
Conjunction conjunction = Restrictions.conjunction(); //and关系
Disjunction disjunction = Restrictions.disjunction(); //or关系
if(!"9".equals(flag) && flag != ""){
int flagInt = Integer.parseInt(flag);
Criterion flagCriterion = Restrictions.eq("flag",flagInt);
conjunction.add(flagCriterion);
}
if(jurisdiction!=""){
Criterion jurisdictionCrt = Restrictions.like("jurisdiction", jurisdiction);
conjunction.add(jurisdictionCrt);
}
if(severity!=""){
Criterion severityCrt = Restrictions.like("severity", severity);
conjunction.add(severityCrt);
}
if(searchText != ""){
Criterion address = Restrictions.like("address", searchText);
Criterion description = Restrictions.like("description", searchText);
Criterion dealName = Restrictions.like("dealName", searchText);
Criterion dataTime = Restrictions.like("dataTime", searchText);
disjunction.add(address);
disjunction.add(description);
disjunction.add(dealName);
disjunction.add(dataTime);
conjunction.add(disjunction);
}
//排序
crit.add(conjunction).addOrder(Order.desc("dataTime"));
// 增加查询条件
Criteria critCount = crit;
total = critCount.list().size();
//分页
crit.setFirstResult((pageNow - 1) * pageSize);
crit.setMaxResults(pageSize);
List<Item> list = crit.list();
List<Integer> listTotal = new ArrayList<Integer>();
listTotal.add(total);
myMap.put("total", listTotal);//总数
myMap.put("rows", list);//每页数据
return myMap;
}
上一篇: php扩展之扩展框架的自动生成
推荐阅读
-
PHP查询数据库中满足条件的记录条数(两种实现方法)
-
Laravel5中实现模糊匹配加多条件查询功能的方法
-
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
-
Hibernate的Criteria 之条件查询
-
Oracle中(column1,column2..)in(集合/子查询)的hibernate实现
-
在 Grails 中利用闭包实现查询条件的动态构造
-
PHP查询数据库中满足条件的记录条数(两种实现方法)
-
PHP查询数据库中满足条件的记录条数(两种实现方法)_php实例
-
Atitit.Hibernate中Criteria使用总结and关联查询and按照子对象查
-
PHP查询数据库中满足条件的记录条数(两种实现方法)_php实例