查詢所有部門信息:
/** * 查詢所有部門信息 */ @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()); } }
分頁結果:
總記錄數結果: