Hibernate框架中criterion的使用
来源:互联网 发布:软件项目管理 考试 编辑:程序博客网 时间:2024/05/22 01:55
criterion单表查询的时候比价简单,当基于多张表查询时,具体做法如下:
<p> Criteria criteria=s.createCriteria(TProduct_CBean.class);//条件查询的主表 Criteria mapcriteria=criteria.createCriteria("mapResources",Criteria.LEFT_JOIN);//条件查询的子表mapResources Criteria sicriteria=criteria.createCriteria("si");//条件查询的子表si</p><p> //添加主表的查询条件 if(map.get("createtime_begin")!=null && !(map.get("createtime_begin").equals(""))) { criteria.add(Restrictions.ge("createtime",map.get("createtime_begin"))); } if(map.get("createtime_end")!=null && !(map.get("createtime_end").equals(""))) { criteria.add(Restrictions.ge("createtime",map.get("createtime_end"))); } if(map.get("product_name")!=null && !(map.get("product_name").equals(""))) { criteria.add(Restrictions.ge("createtime",map.get("product_name"))); } if(map.get("statusid")!=null && !(map.get("statusid").equals(""))) { criteria.add(Restrictions.eq("statusid",map.get("statusid"))); }</p><p> //添加si子表的查询条件 if(map.get("siid")!=null && !(map.get("siid").equals(""))) { sicriteria.add(Restrictions.eq("id",map.get("siid"))); }</p><p> //添加mapresources子表的查询条件 if(map.get("mapid")!=null && !(map.get("mapid").equals("")) ) { mapcriteria.add(Restrictions.eq("id",map.get("mapid"))); }</p><p> //单条记录的查询, int count= ((Integer) criteria.setProjection(Projections.rowCount()) .uniqueResult()).intValue(); criteria.setProjection(null);</p><p> pageResult.setTotalRecord(count); pageResult.getTotalPage(); if (pageResult.getCurrent() > pageResult.getTotalPage()) { pageResult.setCurrent(pageResult.getTotalPage()); } int start = (pageResult.getCurrent() - 1) * pageResult.getPageSize(); int size = pageResult.getPageSize(); criteria.setFirstResult(start);; criteria.setMaxResults(size);</p><p> //多条记录结果集的查询 List list = criteria.list(); List proList = new ArrayList(); if(list.size()>0){ for(int i=0;i<list.size();i++){ Object[] objs=(Object[])list.get(i); //System.out.println("==================="+objs[2]); TProduct_CBean t=(TProduct_CBean)objs[2]; proList.add(t); } } pageResult.setList(proList);</p>
由于product和mapresources之间存在多对多关系,所以上面查询出来的结果是2张表记录的乘积,但由于项目显示不需要乘积,所以后来改成了hibernate的sql查询的方式,在这把这记录一下,以作日后参考。
- Hibernate框架中criterion的使用
- hibernate中criterion的常见用法
- Hibernate Criterion
- Hibernate Criterion .
- Hibernate Criterion
- Hibernate Criterion
- 在intelliJ IDEA下在web项目中使用hibernate出现java.lang.ClassNotFoundException: org.hibernate.criterion.Criteri
- java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
- java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
- Hibernate Criterion 攻略补充
- Hibernate 查询Criterion数据
- Hibernate criterion 方法总结
- Re: DAO interface 是否該包含 Hibernate 的 Criterion ...
- Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
- Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
- Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
- Hibernate Criteria的 Criterion,Projection,Restrictions等条件设置
- hibernate框架中inverse和cascade的使用总结
- nested exception is java.sql.SQLException: 数字溢出的问题解决
- C语言程序设计教程笔记_编译预处理
- HTTP 代码对应的错误汇总表
- DECLARE_COMPLETION 宏
- C#委托和事件 观察者模式理解
- Hibernate框架中criterion的使用
- DOS下创建文件、文件夹
- 苹果否认抄袭索尼 拿出“紫”原型洗冤
- linux c/c++ 调试rate模块时
- Android中源码Launcher主屏幕程序排列详解【安卓Launcher进化一】
- Android中JSON解析 (包括如何写入SD卡)
- 实现VMware linux虚拟机 与 windows 共享文件——VMware-tools的安装
- Android-->Launcher拖拽事件详解【androidICS4.0--Launcher系列二】
- 把AM中的方法发布为WebService