Criteria条件查询
使用Criteria查询包括以下步骤:
(1).使用Session接口的createCriteria()方法创建Criteria对象。
(2).使用Restrictions类提供的静态方法设置查询条件,这些静态方法放回Criterion对象,一个Criterion对象代表一个查询条件。Criteria接口的add()方法用来添加查询条件。
(3).使用Criteria接口的list()方法执行查询语句,list()方法返回java.util.List类型的结果,List集合中的每个元素都是持久化对象。
1 package com.accp.test; 2 3 import java.util.List; 4 import org.hibernate.Criteria; 5 import org.hibernate.Session; 6 import org.hibernate.cfg.Configuration; 7 import com.accp.entity.Emp; 8 9 /** 10 * Hibernate-Criteria查询 11 * 12 * @author 孙洪雨 13 */ 14 public class test { 15 Configuration conf = null; 16 Session session = null; 17 18 /** 19 * Criteria查询所有员工信息 20 */ 21 public void show() { 22 conf = new Configuration().configure();// 读取Hibernate配置文件 23 session = conf.buildSessionFactory().openSession();// 打开Session 24 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表 25 List<Emp> list = criteria.list(); 26 for (Emp item : list) { 27 // 使用for循环遍历所有用户信息 28 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()); 29 } 30 } 31 32 public static void main(String[] args) { 33 test t = new test(); 34 t.show(); 35 } 36 37 }
--使用Criteria接口的add()方法用来添加查询条件。
1 package com.accp.test; 2 3 import java.util.List; 4 5 import org.hibernate.Criteria; 6 import org.hibernate.Session; 7 import org.hibernate.cfg.Configuration; 8 import org.hibernate.criterion.Restrictions; 9 10 import com.accp.entity.Emp; 11 12 /** 13 * Hibernate-Criteria查询 14 * 15 * @author 孙洪雨 16 */ 17 public class test { 18 Configuration conf = null; 19 Session session = null; 20 21 /** 22 * Criteria查询所有员工信息 23 */ 24 public void show() { 25 conf = new Configuration().configure();// 读取Hibernate配置文件 26 session = conf.buildSessionFactory().openSession();// 打开Session 27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表 28 criteria.add(Restrictions.eq("job", "SALESMAN"));//添加查询条件为(job等于SALESMAN)的员工 29 List<Emp> list = criteria.list(); 30 for (Emp item : list) { 31 // 使用for循环遍历(job等于SALESMAN)的员工用户信息 32 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob()); 33 } 34 } 35 36 public static void main(String[] args) { 37 test t = new test(); 38 t.show(); 39 } 40 41 }
--使用ignoreCase()方法忽略大小写。类型必须是字符型,其他会报错!
1 package com.accp.test; 2 3 import java.util.List; 4 5 import org.hibernate.Criteria; 6 import org.hibernate.Session; 7 import org.hibernate.cfg.Configuration; 8 import org.hibernate.criterion.Restrictions; 9 10 import com.accp.entity.Emp; 11 12 /** 13 * Hibernate-Criteria查询 14 * 15 * @author 孙洪雨 16 */ 17 public class test { 18 Configuration conf = null; 19 Session session = null; 20 21 /** 22 * Criteria查询所有员工信息 23 */ 24 public void show() { 25 conf = new Configuration().configure();// 读取Hibernate配置文件 26 session = conf.buildSessionFactory().openSession();// 打开Session 27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表 28 criteria.add(Restrictions.eq("job", "SALESMAN").ignoreCase());//添加查询条件为(job等于SALESMAN(忽略大小写))的员工 29 List<Emp> list = criteria.list(); 30 for (Emp item : list) { 31 // 使用for循环遍历(job等于SALESMAN)的员工用户信息 32 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob()); 33 } 34 } 35 36 public static void main(String[] args) { 37 test t = new test(); 38 t.show(); 39 } 40 41 }
--Criteria支持的范围运算(in列表)、(not in列表)、between 值1 and 值2、 not between 值1 and 值2
1 package com.accp.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.hibernate.Criteria;
7 import org.hibernate.Session;
8 import org.hibernate.cfg.Configuration;
9 import org.hibernate.criterion.Restrictions;
10
11 import com.accp.entity.Emp;
12
13 /**
14 * Hibernate-Criteria查询
15 *
16 * @author 孙洪雨
17 */
18 public class test {
19 Configuration conf = null;
20 Session session = null;
21 /**
22 * Criteria查询所有员工信息
23 */
24 public void show() {
25 conf = new Configuration().configure();// 读取Hibernate配置文件
26 session = conf.buildSessionFactory().openSession();// 打开Session
27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表
28 List<Short>empnos=new ArrayList<Short>();
29 empnos.add(new Short("7369"));
30 empnos.add(new Short("7499"));
31 empnos.add(new Short("7521"));
32 criteria.add(Restrictions.in("empno", empnos));//查询empno在empnos列表中的员工信息
33 List<Emp> list = criteria.list();
34 for (Emp item : list) {
35 // 使用for循环遍历(符合empnps列表)的员工用户信息
36 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob());
37 }
38 }
39
40 public static void main(String[] args) {
41 test t = new test();
42 t.show();
43 }
44
45 }
1 package com.accp.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.hibernate.Criteria;
7 import org.hibernate.Session;
8 import org.hibernate.cfg.Configuration;
9 import org.hibernate.criterion.Restrictions;
10
11 import com.accp.entity.Emp;
12
13 /**
14 * Hibernate-Criteria查询
15 *
16 * @author 孙洪雨
17 */
18 public class test {
19 Configuration conf = null;
20 Session session = null;
21 /**
22 * Criteria查询所有员工信息
23 */
24 public void show() {
25 conf = new Configuration().configure();// 读取Hibernate配置文件
26 session = conf.buildSessionFactory().openSession();// 打开Session
27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表
28 List<Short>empnos=new ArrayList<Short>();
29 empnos.add(new Short("7369"));
30 empnos.add(new Short("7499"));
31 empnos.add(new Short("7521"));
32 criteria.add(Restrictions.not(Restrictions.in("empno", empnos)) );//查询empno不在empnos列表中的员工信息
33 List<Emp> list = criteria.list();
34 for (Emp item : list) {
35 // 使用for循环遍历(不符合empnps列表)的员工用户信息
36 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob());
37 }
38 }
39
40 public static void main(String[] args) {
41 test t = new test();
42 t.show();
43 }
44
45 }
1 package com.accp.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.hibernate.Criteria;
7 import org.hibernate.Session;
8 import org.hibernate.cfg.Configuration;
9 import org.hibernate.criterion.Restrictions;
10
11 import com.accp.entity.Emp;
12
13 /**
14 * Hibernate-Criteria查询
15 *
16 * @author 孙洪雨
17 */
18 public class test {
19 Configuration conf = null;
20 Session session = null;
21 /**
22 * Criteria查询所有员工信息
23 */
24 public void show() {
25 conf = new Configuration().configure();// 读取Hibernate配置文件
26 session = conf.buildSessionFactory().openSession();// 打开Session
27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表
28 criteria.add(Restrictions.between("empno", new Short("7369"), new Short("7869")));//查询empno在7369-7869之间的员工信息
29 List<Emp> list = criteria.list();
30 for (Emp item : list) {
31 // 使用for循环遍历(empno在7369-7869之间)的员工用户信息
32 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob()+"\t编号:"+item.getEmpno());
33 }
34 }
35
36 public static void main(String[] args) {
37 test t = new test();
38 t.show();
39 }
40
41 }
1 package com.accp.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.hibernate.Criteria;
7 import org.hibernate.Session;
8 import org.hibernate.cfg.Configuration;
9 import org.hibernate.criterion.Restrictions;
10
11 import com.accp.entity.Emp;
12
13 /**
14 * Hibernate-Criteria查询
15 *
16 * @author 孙洪雨
17 */
18 public class test {
19 Configuration conf = null;
20 Session session = null;
21 /**
22 * Criteria查询所有员工信息
23 */
24 public void show() {
25 conf = new Configuration().configure();// 读取Hibernate配置文件
26 session = conf.buildSessionFactory().openSession();// 打开Session
27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表
28 criteria.add(Restrictions.not(Restrictions.between("empno", new Short("7369"), new Short("7869"))));//查询empno不在7369-7869之间的员工信息
29 List<Emp> list = criteria.list();
30 for (Emp item : list) {
31 // 使用for循环遍历(不符合empno在7369-7869之间)的员工用户信息
32 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob()+"\t编号:"+item.getEmpno());
33 }
34 }
35
36 public static void main(String[] args) {
37 test t = new test();
38 t.show();
39 }
40
41 }
--Criteria支持的字符串模式匹配 like、ilike(忽略大小写)
1 package com.accp.test; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.hibernate.Criteria; 7 import org.hibernate.Session; 8 import org.hibernate.cfg.Configuration; 9 import org.hibernate.criterion.Restrictions; 10 11 import com.accp.entity.Emp; 12 13 /** 14 * Hibernate-Criteria查询 15 * 16 * @author 孙洪雨 17 */ 18 public class test { 19 Configuration conf = null; 20 Session session = null; 21 /** 22 * Criteria查询所有员工信息 23 */ 24 public void show() { 25 conf = new Configuration().configure();// 读取Hibernate配置文件 26 session = conf.buildSessionFactory().openSession();// 打开Session 27 Criteria criteria = session.createCriteria(Emp.class);// 查询Emp表 28 criteria.add(Restrictions.like("ename", "S%"));//查询ename以S开头的员工信息 29 List<Emp> list = criteria.list(); 30 for (Emp item : list) { 31 // 使用for循环遍历(ename以S开头的员工信息)的员工用户信息 32 System.out.println("姓名:" + item.getEname() + "\t工资:" + item.getSal()+"\t部门:"+item.getJob()+"\t编号:"+item.getEmpno()); 33 } 34 } 35 36 public static void main(String[] args) { 37 test t = new test(); 38 t.show(); 39 } 40 41 }
--Criteria支持的逻辑运算 and、or、not