hibernate的查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC(Query By Criteria)查询, 以及使用原生SQL查询

HQL查询

• HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式。

• HQL在语法结构上和SQL语句十分的相同,所以可以很快的上手进行使用。使用HQL需要用到Hibernate中的Query对象,该对象专门执行HQL方式的操作。

查询所有示例
session.beginTransaction();
String hql = "from User"; // from 后跟的是要查询的对象,而不是表
Query query = session.createQuery(hql);
List<User> userList = query.list();
for(User user:userList){
  System.out.println(user.getUserName());
}
session.getTransaction().commit();
获取一个不完整的对象
session.beginTransaction();
String hql = "select userName from User";
Query query = session.createQuery(hql);
List nameList = query.list();
for(Object obj:nameList){
  System.out.println(obj);
}
session.getTransaction().commit();

// 多个属性的话,需要用object[]接收

session.beginTransaction();
String hql = "select userName,userPwd from User";
Query query = session.createQuery(hql);
List nameList = query.list(); 

for(Object obj:nameList){
    Object[] array = (Object[]) obj; // 转成object[]
    System.out.println("name:" + array[0]);
    System.out.println("pwd:" + array[1]);
}
session.getTransaction().commit();
统计和分组查询
session.beginTransaction();
String hql = "select count(*),max(id) from User";
Query query = session.createQuery(hql);
List nameList = query.list();
for(Object obj:nameList){
    Object[] array = (Object[]) obj;
    System.out.println("count:" + array[0]);
    System.out.println("max:" + array[1]);
}
session.getTransaction().commit();
更多写法
select distinct name from Student; 

select max(age) from Student; 

select count(age),age from Student group by age; 

from Student order by age;
HQL占位符和分页

session.beginTransaction();
        String sql ="select uname,password from User where enable=?";
        Query query =session.createQuery(sql);
        //占位符内容
        query.setBoolean(0, true);
        //第几个开始
        query.setFirstResult(0);
        //显示个数
        query.setMaxResults(2);
        List<Object[]> list = query.list();
        for (Object[] user : list) {
            System.out.println(user[0]+"--"+user[1]);
        }
        session.getTransaction().commit();

原生SQL查询

addEntity()示例
session.beginTransaction(); 

String sql = "select id,username,userpwd from t_user"; 

// addEntity()可以告诉Hibernate你想要封装成对象的类型,然后自动为你封装
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); 

List<User> list = query.list(); 

for(User user : list){
  System.out.println(user.getUserName());
} 

session.getTransaction().commit();
uniqueResult示例
session.beginTransaction(); 

String sql = "select id,username,userpwd from t_user where id = 2";
SQLQuery query = session.createSQLQuery(sql).addEntity(User.class); 

User user = (User) query.uniqueResult(); 

System.out.println(user.getUserName()); 

session.getTransaction().commit();

hibernate的查询方式

时间: 2024-10-09 21:11:14

hibernate的查询方式的相关文章

Hibernate的查询方式(简要)

Hibernate的查询方式 1.OID检索: 使用session.get(Object.class,oid),session.load(Object.class,oid),根据表的主键查询 2.对象导航检索以及联级映射的配置: 根据已有对象查询与之对应的另外一些对象,比如一个Customer对象中有一个Linkmans(联系人对象)集合,当查询出Customer后,直接变量linkMans集合就可以查询到与之对应的联系人配置文件: 一对一:<one-to-one name="User&q

4、Hibernate的查询方式

一.Hibernate的查询方式:OID查询 1.OID检索:Hibernate根据对象的OID(主键)进行检索 1-1.使用get方法 Customer customer = session.get(Customer.class,1L); 1-2.使用load方法 Customer customer = session.load(Customer.class,1L); 3.对象导航检索:Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式. Customer custom

Hibernate框架查询方式

1. 唯一标识OID的检索方式 * session.get(对象.class,OID) 2. 对象的导航的方式 public class Demo { /** * 演示对象导航的方式 */ @Test public void run1() { Session session = HibernateUtils.getCurrentSession(); Transaction tx = session.beginTransaction(); //先查询1号客户通过OID查询 Customer cus

hibernate select 查询方式总结

1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 String hql = "from Users"; Query query = session.createQuery(hql); List<Users> users = query.list(); for(Users user : users){ System.out.println(user.getName() + " : " +

hibernate(七) hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数据表查询操作详解  ,以至于看这篇文章不用那么吃力. --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.cla

Hibernate学习(七)———— hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.class,2); d.getStaffSet().size(); //d对象关联Staff集合,h

Hibernate主要查询方式

1.hql查询 1.1 无参数的hql查询 1.2 带参的hql查询(分为问号占位和字符占位两种) Ps: 绑定各种类型的参数时用setParameter()绑定参数,如封装方法后用不定参数时循环绑定参数:也可以使用setProperties()动态绑定,但是不如criteria查询 2.特殊hql查询方法 2.1 uniqueResult()查询唯一结果 需要注意的是,当查询结果不唯一时,会报NonUniqueResultException的错,谨慎使用该方法 2.2 分页查询 2.3 投影查

Hibernate查询方式 一

Hibernate查询方式 说到hibernate的查询方式,我们自然而然就想到了它--hql,hibernate query language.hql是使用hibernate框架的变成配朋友们使用最多的一种方式,它以自身的独特的优势:屏蔽数据库,书写灵活的优点,备受大家的青睐.但是Hibernate不仅给我们提供了这一种查询方式,这时候悠然要说来,是不只一种,还有sql,对,确实还有sql,但是还有一种,就是Criteria 查询.那么今天,我们就来聊一聊hibernate的几种查询方式. H

hibernate的三种查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC, 以及使用原生SQL查询(Session的查询) 1)Query的查询:使用HQL语句或SQL语句完成查询 2)Criteria的查询:通过方法和类中属性的关系,来设置查询条件,完成查询. 3)Session的查询:按主键查询查询,方法为get或load 一.HQL查询 ? HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式. ? H