首页 > 代码库 > Criteria查询

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()+"\t"+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());            }        }

分页结果:

技术分享

总记录数结果:

技术分享

 

Criteria查询