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

                                                                        Criteria查询

    1.查询所有(两种重载方式)

    //查询部门的所有信息
        @Test
        public void selectAllDept(){
            //Criteria criteria = session.createCriteria(Dept.class);
            Criteria criteria = session.createCriteria("cn.happy.entity.Dept");
            List<Dept> list = criteria.list();
            for (Dept dept : list) {
                
                System.out.println(dept.getDeptName());
            }
        }

    2.带条件的查询

     //带条件查询
        @Test
        public void selectBy(){
            
            
            Criteria criteria = session.createCriteria(Dept.class);
            criteria = criteria.add(Restrictions.eq("deptName", "财务部"));
            List<Dept> list = criteria.list();
            for (Dept dept : list) {    
                System.out.println("部门名称:"+dept.getDeptName()+"	部门编号:"+dept.getDeptNo());
            }
            
        }    

    3.关联查询 

    //运用别名查询  查询部门名称为  财务部 的员工  最终定位到的是员工  所以映射员工字节码
        @Test
        public void aliziatest(){
            Criteria criteria = session.createCriteria(Emp.class);
            //给员工表中外键属性dept起个别名
            criteria.createAlias("dept", "d");
            criteria = criteria.add(Restrictions.eq("d.deptName", "财务部"));
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("职工姓名:"+emp.getEmpName()+"	部门名称:"+emp.getDept().getDeptName());
            }
            
        }

    4.范围查询

    //查询员工姓名是邹乐或者范子阳的员工信息
        @Test
        public void intest(){
            Criteria criteria = session.createCriteria(Emp.class);
            
            List<String> lists=new ArrayList<String>();
            lists.add("邹乐");
            lists.add("范子阳");
            criteria=criteria.add(Restrictions.in("empName", lists));
            
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("职工姓名:"+emp.getEmpName()+"	部门名称:"+emp.getDept().getDeptName());
            }
        }

    5.字符串模式匹配

     //字符串模式匹配
        //查询员工姓名包含“范”的员工信息 ilike(忽略大小写)
        //字符串模式匹配
        @Test
        public void stringTest(){
            Criteria criteria = session.createCriteria(Emp.class);
            criteria=criteria.add(Restrictions.ilike("empName","%范%"));
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("职工姓名:"+emp.getEmpName()+"	部门名称:"+emp.getDept().getDeptName());
            }
            
        }

    6.逻辑运算符

    //字符串模式匹配
        //查询员工编号为1,员工姓名包含“范”的员工信息 ilike(忽略大小写)
        //字符串模式匹配
        @Test
        public void stringTests(){
            Criteria criteria = session.createCriteria(Emp.class);
            
            Criterion criterion = Restrictions.and(Restrictions.eq("empNo", 1), Restrictions.ilike("empName","",MatchMode.START));
            criteria=criteria.add(criterion);
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("职工姓名:"+emp.getEmpName()+"	部门名称:"+emp.getDept().getDeptName());
            }
            
        }

     7.动态查询

    //动态查询
        @Test
        public void dongtaiTest(){
            Criteria criteria = session.createCriteria("cn.happy.entity.Emp");
            Emp emp=new Emp();
            emp.setEmpNo(2);
            //emp.setEmpName("邹乐");
            
            if(emp.getEmpName()!=null){
                
                criteria.add(Restrictions.eq("empName", emp.getEmpName()));
            }
            if(emp.getEmpNo()!=null){
                criteria.add(Restrictions.eq("empNo", emp.getEmpNo()));
            }
            
            List<Emp> list = criteria.list();
            for (Emp emp2 : list) {
                System.out.println("职工姓名:"+emp2.getEmpName()+"	部门名称:"+emp2.getDept().getDeptName());
            }
        }
        

     8.集合运算

     //集合运算
        @Test
        public void collTest(){
            Criteria criteria = session.createCriteria(Dept.class);
            criteria.add(Restrictions.isEmpty("emps"));
            List<Dept> list = criteria.list();
            for (Dept dept : list) {
                System.out.println("部门名称:"+dept.getDeptName());
            }
        }

     9.排序

        //排序
        //按员工编号进行排序
        @Test
        public void orderByeNo(){
            Criteria criteria = session.createCriteria("cn.happy.entity.Emp");
            criteria = criteria.addOrder(Order.desc("empNo"));
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("职工姓名:"+emp.getEmpName()+"	部门名称:"+emp.getDept().getDeptName());
            }
            
        }
        

    10.分页

        //分页  将员工信息分页查询  每页只查询三条数据
        @Test
        public void fenye(){
            Criteria criteria = session.createCriteria(Emp.class);
            CountProjection count2 = Projections.count("empNo");
            criteria.setProjection(count2);   
            Integer count = ((Long)criteria.uniqueResult()).intValue();
            System.out.println("总记录数:"+count);
            
            criteria.addOrder(Order.desc("empNo"));
            int pageSize=3;
            int pageIndex=2;
           
            criteria.setFirstResult((pageIndex-1)*pageSize);
            criteria.setMaxResults(pageSize);
            
            
            List<Emp> list = criteria.list();
            for (Emp emp : list) {
                System.out.println("员工姓名:"+emp.getEmpName()+"部门名称:"+emp.getDept().getDeptName());
            }
        }
        

    11.DetachedCriteria查询

    //DetachedCriteria查询
        @Test
        public void detacahedCriteria(){
            DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Emp.class);
            detachedCriteria.createAlias("dept", "d");
            detachedCriteria.add(Restrictions.eq("d.deptName", "财务部"));
            List<Emp> list = detachedCriteria.getExecutableCriteria(session).list();
            for (Emp emp : list) {
                
                System.out.println(emp.getEmpName());
            }
            
        }
        
  • 相关阅读:
    浅析全球电信运营商排名
    《时空骇客》中的远距传物理论和虫洞理论
    优秀的商业计划书一定会“动”
    手机搜索的商业模式
    手机网游排行榜
    手机按键对应表
    "Avatar模式"透析
    百度数据暗示无线互联网将以个人为中心
    一种精神致加西亚的信
    手机定位技术将成社交网络催化剂
  • 原文地址:https://www.cnblogs.com/hmy-1365/p/5796248.html
Copyright © 2011-2022 走看看