码迷,mamicode.com
首页 > 其他好文 > 详细

Criteria查询

时间:2016-09-09 06:37:02      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

查询所有部门信息:

/**
         * 查询所有部门信息
         */
        @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查询

标签:

原文地址:http://www.cnblogs.com/qingzhi/p/5855128.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!