1、利用Session接口提供的load方法或者get方法
2、Hibernate提供的主要查询方法
1)Criteria Query(条件查询)的步骤:
(1)通过Session来创建条件查询对象Criteria
Criteria criteria = session.createCriteria(Course.class);
(2)构建条件---创建查询条件对象Criterion
Criterion criterion1 = Property.forName("id").ge(39);//通过Property来创建
Criterion criterion2 = Restrictions.le("cycle", 5); //通过Restrictions来创建
(3)查询对象关联条件
criteria.add(criterion1);
(4)执行条件查询
List<Course> courses = criteria.list();
2)HQL(Hibernate Qurey Language)
特点: 语法上与SQL类似; 完全面向对象的查询; 支持继承、多态、关联
(1) FROM子句
例如:查询所有的学生实例
Query query=session.createQuery("from Student");
query.list();
(2) SELECT子句
选择哪些对象和属性返回到结果集
A、SELECT语句后可以跟多个任意类型的属性,返回结果保存在Object类型的数组中
//A、B、C、都是查询学生的姓名和年龄
Query query=session.createQuery("select stu.name,stu.age from Student as stu");
List<Object[]> os=query.list();//返回的Object数组中有两个元素,第一个是姓名,第二个是年龄
B、SELECT语句后可以跟多个任意类型的属性,返回结果也可以保存在List中
Query query=session.createQuery ("select new List(stu.name,stu.age) from Student as stu");
List<List> lists=query.list();
C、SELECT语句后可以跟多个任意类型的属性,返回结果也可以是一个类型安全的POJO对象
Query query=session.createQuery
("select new Student(stu.name,stu.age) from Student as stu");
List<Student> stuList=query.list();//注意:Student类必须有Student(String,int)的构造方法
D、SELECT子句中可以使用聚集函数、数学操作符、连接
支持的聚集函数:avg、sum、min、max、count ….
(3) WHERE子句,限制返回结果集的范围
(4) ORDER BY子句,对返回结果集进行排序
/**
* hql 查询语句
*/
public void query(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select p.pname , p.page from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
Object object[] = ( Object[])list.get(i);
for ( int k = 0 ; k < object.length ; k ++ ) {
System.out.println( object[k] );
}
}
}
/**
* hql 查询语句 new List ()
*/
public void show(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new List( p.pname , p.page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List<List> list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( (list.get(i)));
}
}
/**
* hql 查询语句 new Map () ;
*/
public void show1(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new Map( p.pname as pname, p.page as page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( ((HashMap)list.get(i)).get("pname"));
System.out.println( ((HashMap)list.get(i)).get("page"));
}
}
2、Hibernate提供的主要查询方法
1)Criteria Query(条件查询)的步骤:
(1)通过Session来创建条件查询对象Criteria
Criteria criteria = session.createCriteria(Course.class);
(2)构建条件---创建查询条件对象Criterion
Criterion criterion1 = Property.forName("id").ge(39);//通过Property来创建
Criterion criterion2 = Restrictions.le("cycle", 5); //通过Restrictions来创建
(3)查询对象关联条件
criteria.add(criterion1);
(4)执行条件查询
List<Course> courses = criteria.list();
2)HQL(Hibernate Qurey Language)
特点: 语法上与SQL类似; 完全面向对象的查询; 支持继承、多态、关联
(1) FROM子句
例如:查询所有的学生实例
Query query=session.createQuery("from Student");
query.list();
(2) SELECT子句
选择哪些对象和属性返回到结果集
A、SELECT语句后可以跟多个任意类型的属性,返回结果保存在Object类型的数组中
//A、B、C、都是查询学生的姓名和年龄
Query query=session.createQuery("select stu.name,stu.age from Student as stu");
List<Object[]> os=query.list();//返回的Object数组中有两个元素,第一个是姓名,第二个是年龄
B、SELECT语句后可以跟多个任意类型的属性,返回结果也可以保存在List中
Query query=session.createQuery ("select new List(stu.name,stu.age) from Student as stu");
List<List> lists=query.list();
C、SELECT语句后可以跟多个任意类型的属性,返回结果也可以是一个类型安全的POJO对象
Query query=session.createQuery
("select new Student(stu.name,stu.age) from Student as stu");
List<Student> stuList=query.list();//注意:Student类必须有Student(String,int)的构造方法
D、SELECT子句中可以使用聚集函数、数学操作符、连接
支持的聚集函数:avg、sum、min、max、count ….
(3) WHERE子句,限制返回结果集的范围
(4) ORDER BY子句,对返回结果集进行排序
/**
* hql 查询语句
*/
public void query(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select p.pname , p.page from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
Object object[] = ( Object[])list.get(i);
for ( int k = 0 ; k < object.length ; k ++ ) {
System.out.println( object[k] );
}
}
}
/**
* hql 查询语句 new List ()
*/
public void show(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new List( p.pname , p.page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List<List> list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( (list.get(i)));
}
}
/**
* hql 查询语句 new Map () ;
*/
public void show1(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new Map( p.pname as pname, p.page as page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( ((HashMap)list.get(i)).get("pname"));
System.out.println( ((HashMap)list.get(i)).get("page"));
}
}
本文介绍Hibernate框架下多种查询方法,包括CriteriaQuery和HQL等,并详细解释了如何利用这些方法进行条件筛选、聚合函数使用及结果排序等操作。
781

被折叠的 条评论
为什么被折叠?



