1.条件查询,动态查询

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.排序 分页 关联

 1 public void show(){
 2         Session session=null;
 3         try {
 4             session=HibernateUtil.currentSession();
 5             Criteria c=session.createCriteria(Emp.class);
 6 //            //查询工资高于某个范围,结果按照升序或者降序排列
 7 //            
 8 //            //添加条件
 9 //            List<Emp> list= c.add(Restrictions.gt("salary", 1500D)).addOrder(Order.desc("salary")).list();
10 //            
11 //            for (Emp emp : list) {
12 //                System.out.println(emp.getName()+"  "+emp.getSalary());
13 //            }
14             
15             
16 //            //工资高于某个范畴,按照工资升序,在按照编号降序
17 //            @SuppressWarnings("unchecked")
18 //            List<Emp> list=c.add(Restrictions.gt("salary", 1500D)).
19 //                    addOrder(Order.asc("salary")).
20 //                    addOrder(Order.desc("id")).list();
21 //            for (Emp emp : list) {
22 //                System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
23 //            }
24             
25             
26             //查出工资最高的两个人
27             List<Emp> list=c.add(Restrictions.isNotNull("salary")).
28             addOrder(Order.desc("salary")).
29             setFirstResult(0).setMaxResults(2).list();
30             for (Emp emp : list) {
31                 System.out.println(emp.getName()+"----"+emp.getSalary()+"----"+emp.getId());
32             }
33             
34         } catch (Exception e) {
35             e.printStackTrace();
36         }finally{
37             HibernateUtil.closeSession();
38         }
39     }

3.分页

 1 public void pageDemo(){
 2         Session session=null;
 3         try {
 4             session=HibernateUtil.currentSession();
 5             
 6             Criteria c=session.createCriteria(Emp.class);
 7             
 8             //获取总记录    
 9             Integer count=(Integer) c.setProjection(Projections.rowCount()).uniqueResult();
10             //设置每页显示几条记录
11             int pageSize=4;
12             //计算总页数
13             int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1);
14             //清空查找总记录数时设置的投影
15             c.setProjection(null);
16             //页的索引
17             int pageIndex=1;
18             //设置从哪条记录开始,不包括输入的值
19             c.setFirstResult((pageIndex-1)*pageSize);
20             //设置查找的记录的总条数
21             c.setMaxResults(pageSize);
22             
23             List<Emp> list=c.list();
24             for (Emp emp : list) {
25                 System.out.println(emp.getName());
26             }
27             
28         } catch (Exception e) {
29             e.printStackTrace();
30         }finally{
31             HibernateUtil.closeSession();
32         }
33     }

4.关联查询

 1 public void joinDemo(){
 2         Session session=null;
 3         try {
 4             session=HibernateUtil.currentSession();
 5             
 6 //            //查询包含指定字符的员工
 7 //            List<Emp> list=session.createCriteria(Emp.class).
 8 //                    add(Restrictions.ilike("name", "王", MatchMode.ANYWHERE)).
 9 //                    createCriteria("dept").add(Restrictions.eq("name", "开发部")).list();
10 //            for (Emp emp : list) {
11 //                System.out.println(emp.getName()+"   "+emp.getDept().getName());
12 //            }
13             
14             //查询工作所在地为某一部门的员工人数
15             List<Dept> list=session.createCriteria(Dept.class,"d").
16             setFetchMode("emps", FetchMode.JOIN).add(Restrictions.eq("d.name", "开发部")).list();
17             System.out.println(list.size());
18         } catch (Exception e) {
19             e.printStackTrace();
20         }finally{
21             HibernateUtil.closeSession();
22         }
23     }

5.投影

 1 public void projectionDemo(){
 2         Session session=null;
 3         try {
 4             session=HibernateUtil.currentSession();
 5             
 6 //            //查询员工的姓名和入职时间
 7 //            List<Object[]> list=session.createCriteria(Emp.class).
 8 //            setProjection(Projections.projectionList().
 9 //                    add(Property.forName("name")).
10 //                    add(Property.forName("hiredate")))
11 //                    .list();
12 //            for (Object[] obj : list) {
13 //                System.out.println(obj[0]+"   "+obj[1]);
14 //                // new Date(((Timestamp)obj[1]).getTimestamp());
15 //            }
16             
17 //            //统计各部门的平均工资、最高工资、最低工资
18 //            List<Object[]> list=session.createCriteria(Emp.class,"e").
19 //                    createAlias("e.dept", "d").
20 //                    setProjection(Projections.projectionList().
21 //                            add(Projections.groupProperty("d.name")).
22 //                            add(Projections.avg("salary")).
23 //                            add(Projections.max("salary")).
24 //                            add(Projections.min("salary"))).list();
25 //            for (Object[] obj : list) {
26 //                System.out.println(obj[0]+"  "+obj[1]+"  "+obj[2]+"   "+obj[3]);
27 //            }
28             
29             //使用DetachedCriteria
30             DetachedCriteria dc=DetachedCriteria.forClass(Emp.class,"e")
31                     .createAlias("e.dept", "d").add(Restrictions.eq("d.name", "人事部"))
32                     .add(Restrictions.ilike("e.name", "王",MatchMode.ANYWHERE));
33             
34             //查询数据
35             List<Emp> list=  dc.getExecutableCriteria(session).list();
36             for (Emp emp : list) {
37                 System.out.println(emp.getName()+"---"+emp.getDept().getName());
38             }
39         } catch (Exception e) {
40             e.printStackTrace();
41         }finally{
42             HibernateUtil.closeSession();
43         }
44     }

 

posted on 2015-12-02 20:45  映日残阳  阅读(1034)  评论(0编辑  收藏  举报