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());
            }
        }

分頁結果:

總記錄數結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM