zoukankan      html  css  js  c++  java
  • Criteria查询

    查询所有部门信息:

    /**
             * 查询所有部门信息
             */
            @Test
            public void groupTest(){
                Criteria criteria = session.createCriteria(Dept.class);
                List<Dept> list = criteria.list();
                for (Dept item : list) {
                    System.out.println(item.getDeptName());
                }
            }

    运行结果:

    带条件查询部门名称为 "大神部" 的部门信息:

    /**
             * 带条件查询部门名称为 "大神部" 的部门信息
             */
            @Test
            public void hasConditionTest(){
                Criteria criteria = session.createCriteria(Dept.class);
                Criterion criterion = Restrictions.eq("deptName", "大神部");
                criteria.add(criterion);
                List<Dept> list = criteria.list();
                for (Dept item : list) {
                    System.out.println(item.getDeptName()+"	"+item.getDeptNo());
                }
            }

    结果:

    关联查询  查询"大神部"的所有员工:

    /**
             * 关联查询  查询"大神部"的所有员工
             */
            @Test
            public void connectTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                
                //给Emp中关联的dept对象起一个别名 为  d
                criteria.createAlias("dept", "d");
                Criterion criterion = Restrictions.eq("d.deptName", "大神部");
                
                criteria.add(criterion);
                List<Emp> list = criteria.list();
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    范围查询部门为"大神部" 和  "就业部"  的员工信息:

    /**
             * 范围查询部门为"大神部" 和  "就业部"  的员工信息
             */
            @Test
            public void rangeTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                
                List<String> lists=new ArrayList<String>();
                lists.add("大神部");
                lists.add("就业部");
                
                //给Emp中关联的dept对象起一个别名 为  d
                criteria.createAlias("dept", "d");
                Criterion criterion = Restrictions.in("d.deptName", lists);
                
                criteria.add(criterion);
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    查询部门表中包含"就业部"的所有员工姓名:

    /**
             * 字符串模式匹配
             * 查询部门表中包含"就业部"的所有员工姓名
             */
            @Test
            public void ilikeTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                
                //给Emp中关联的dept对象起一个别名 为  d
                criteria.createAlias("dept", "d");
                Criterion criterion = Restrictions.ilike("d.deptName", "%就业部%");
                
                criteria.add(criterion);
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    and 过滤 查询部门是"就业部" 并且员工姓名包含"小"的员工信息:

    /**
             * 逻辑运算
             * and 过滤 查询部门是"就业部" 并且员工姓名包含"小"的员工信息
             */
            @Test
            public void andTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                
                //给Emp中关联的dept对象起一个别名 为  d
                criteria.createAlias("dept", "d");
                Criterion c1 = Restrictions.eq("d.deptName", "就业部");
                Criterion c2 = Restrictions.ilike("empName", "%小%");
                
                Criterion criterion = Restrictions.and(c1, c2);
                
                criteria.add(criterion);
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    集合运算    查询没有员工的部门:

    /**
             * 集合运算
             * 查询没有员工的部门
             */
            @Test
            public void isEmptyTest(){
                Criteria criteria = session.createCriteria(Dept.class);
                
                Criterion criterion = Restrictions.isEmpty("emps");
                
                criteria.add(criterion);
                List<Dept> list=criteria.list();
                
                for (Dept item : list) {
                    System.out.println(item.getDeptName());
                }
            }

    结果:

    动态查询    查询员工部门是"就业部" 并且 员工编号大于0的 员工信息:

    /**
             * 动态查询
             * 查询员工部门是"就业部"   并且  员工编号大于0的  员工信息
             */
            @Test
            public void dynameicTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                //构建出一个和page对应的条件类   以此判断是否为空
                EmpCondition condition=new EmpCondition();
                condition.setDeptName("就业部");
                condition.setEmpId(0);
                
                //判定之后  动态拼接检索条件
                if (condition.getDeptName()!=null) {
                    //给Emp中关联的dept对象起一个别名 为  d
                    criteria.createAlias("dept", "d");
                    
                    //用户填写的部门名称作为检索条件
                    criteria.add(Restrictions.eq("d.deptName", condition.getDeptName()));
                }
                if (condition.getEmpId()!=null) {
                    criteria.add(Restrictions.gt("empId", condition.getEmpId()));
                }
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    排序addOrder()   查询员工编号大于0的 员工信息,按员工编号排序:

    /**
             * 排序addOrder()
             * 查询员工编号大于0的  员工信息,按员工编号排序
             */
            @Test
            public void orderTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                Criterion criterion = Restrictions.gt("empId", 0);
                
                criteria.add(criterion).addOrder(Order.asc("empId"));
                
                
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    结果:

    总记录数   和     分页  查询员工表中4-6条数据,每页显示3条:

    /**
             * 
             *  总记录数   和     分页  查询员工表中4-6条数据,每页显示3条
             */
            @Test
            public void pageListTest(){
                Criteria criteria = session.createCriteria(Emp.class);
                
                //总记录数
                //新的类型:Projections
                Projection projection = Projections.count("empId");
                criteria.setProjection(projection);
                //看总记录数 转成Integer类型
                Integer count= ((Long)criteria.uniqueResult()).intValue();
                System.out.println("总记录数:"+count);
                
                
                //预置两个变量
                int pageSize=3;
                int pageIndex=2;
                
                criteria.setFirstResult((pageIndex-1)*pageSize);
                criteria.setMaxResults(pageSize);
                
                List<Emp> list=criteria.list();
                
                for (Emp item : list) {
                    System.out.println(item.getEmpName());
                }
            }

    分页结果:

    总记录数结果:

  • 相关阅读:
    跨浏览器的事件对象(EventUtil)
    原型 Object.create
    DC大牛的function扩展
    事件代理 proxy
    错误处理程序
    JQuery 插件
    关于ClownFish的问题
    C#拾遗
    Jquery技巧
    防盗链
  • 原文地址:https://www.cnblogs.com/qingzhi/p/5855128.html
Copyright © 2011-2022 走看看