Cretiria查询应用(二)
2015-12-02 20:45
211 查看
1.条件查询,动态查询
2.排序 分页 关联
3.分页
4.关联查询
5.投影
public void conditionQuery(){ Session session=null; try { session=HibernateUtil.currentSession(); //准备查询条件,对第三方类进行封装 ConditionEmp cm=new ConditionEmp(); cm.setJob("教员"); cm.setSalary(1400D); cm.setHireDateBegin(ConvertDate.strToDate("2000-11-11", "yyyy-MM-dd")); cm.setHireDateEnd(ConvertDate.strToDate("2016-11-11", "yyyy-MM-dd")); //动态添加条件 Criteria c=session.createCriteria(Emp.class); if(cm.getJob()!=null){ //工作选项不为空 c.add(Restrictions.ilike("job", cm.getJob(), MatchMode.ANYWHERE)); } if(cm.getSalary()!=0){ c.add(Restrictions.gt("salary", cm.getSalary())); } if(cm.getHireDateBegin()!=null){ c.add(Restrictions.ge("hiredate", cm.getHireDateBegin())); } if(cm.getHireDateEnd()!=null){ c.add(Restrictions.le("hiredate", cm.getHireDateEnd())); } List<Emp> list=c.list(); for (Emp emp : list) { System.out.println(emp.getName()); } } catch (Exception e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } }
2.排序 分页 关联
public void show(){ Session session=null; try { session=HibernateUtil.currentSession(); Criteria c=session.createCriteria(Emp.class); // //查询工资高于某个范围,结果按照升序或者降序排列 // // //添加条件 // List<Emp> list= c.add(Restrictions.gt("salary", 1500D)).addOrder(Order.desc("salary")).list(); // // for (Emp emp : list) { // System.out.println(emp.getName()+" "+emp.getSalary()); // } // //工资高于某个范畴,按照工资升序,在按照编号降序 // @SuppressWarnings("unchecked") // List<Emp> list=c.add(Restrictions.gt("salary", 1500D)). // addOrder(Order.asc("salary")). // addOrder(Order.desc("id")).list(); // for (Emp emp : list) { // System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId()); // } //查出工资最高的两个人 List<Emp> list=c.add(Restrictions.isNotNull("salary")). addOrder(Order.desc("salary")). setFirstResult(0).setMaxResults(2).list(); for (Emp emp : list) { System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId()); } } catch (Exception e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } }
3.分页
public void pageDemo(){ Session session=null; try { session=HibernateUtil.currentSession(); Criteria c=session.createCriteria(Emp.class); //获取总记录 Integer count=(Integer) c.setProjection(Projections.rowCount()).uniqueResult(); //设置每页显示几条记录 int pageSize=4; //计算总页数 int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); //清空查找总记录数时设置的投影 c.setProjection(null); //页的索引 int pageIndex=1; //设置从哪条记录开始,不包括输入的值 c.setFirstResult((pageIndex-1)*pageSize); //设置查找的记录的总条数 c.setMaxResults(pageSize); List<Emp> list=c.list(); for (Emp emp : list) { System.out.println(emp.getName()); } } catch (Exception e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } }
4.关联查询
public void joinDemo(){ Session session=null; try { session=HibernateUtil.currentSession(); // //查询包含指定字符的员工 // List<Emp> list=session.createCriteria(Emp.class). // add(Restrictions.ilike("name", "王", MatchMode.ANYWHERE)). // createCriteria("dept").add(Restrictions.eq("name", "开发部")).list(); // for (Emp emp : list) { // System.out.println(emp.getName()+" "+emp.getDept().getName()); // } //查询工作所在地为某一部门的员工人数 List<Dept> list=session.createCriteria(Dept.class,"d"). setFetchMode("emps", FetchMode.JOIN).add(Restrictions.eq("d.name", "开发部")).list(); System.out.println(list.size()); } catch (Exception e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } }
5.投影
public void projectionDemo(){ Session session=null; try { session=HibernateUtil.currentSession(); // //查询员工的姓名和入职时间 // List<Object[]> list=session.createCriteria(Emp.class). // setProjection(Projections.projectionList(). // add(Property.forName("name")). // add(Property.forName("hiredate"))) // .list(); // for (Object[] obj : list) { // System.out.println(obj[0]+" "+obj[1]); // // new Date(((Timestamp)obj[1]).getTimestamp()); // } // //统计各部门的平均工资、最高工资、最低工资 // List<Object[]> list=session.createCriteria(Emp.class,"e"). // createAlias("e.dept", "d"). // setProjection(Projections.projectionList(). // add(Projections.groupProperty("d.name")). // add(Projections.avg("salary")). // add(Projections.max("salary")). // add(Projections.min("salary"))).list(); // for (Object[] obj : list) { // System.out.println(obj[0]+" "+obj[1]+" "+obj[2]+" "+obj[3]); // } //使用DetachedCriteria DetachedCriteria dc=DetachedCriteria.forClass(Emp.class,"e") .createAlias("e.dept", "d").add(Restrictions.eq("d.name", "人事部")) .add(Restrictions.ilike("e.name", "王",MatchMode.ANYWHERE)); //查询数据 List<Emp> list= dc.getExecutableCriteria(session).list(); for (Emp emp : list) { System.out.println(emp.getName()+"---"+emp.getDept().getName()); } } catch (Exception e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } }
相关文章推荐
- web乱码问题
- kafka工作原理简介
- 《leetCode》:Word Search II-------hard
- MySQL Heartbeat+drbd高可用
- ios 获取屏幕的属性和宽度
- 3ds max 2015 安装方法
- Adreno Profiler分析任意安卓游戏特效+抓取资源
- matlab图像几何操作
- 使用 Anthem.NET 框架的一个调试经历
- 流水灯,C语言版和汇编版
- GenericServlet
- 从846家初创倒下 看A轮融资后的悬崖
- kobject的浅析
- 1004. To Buy or Not to Buy - Hard Version (35)
- (转载)图像处理进行归一化的各种理由。
- 运算符的一些运用规则
- android app 与电脑wifi通信
- OpenJudge_P6049 买书(DP)
- UI基础整理-9
- 如何让iOS 保持界面流畅?这些技巧你知道吗