Hibernate HQL查询 查询某几列

  Hibernate使用Query对象进行查询。Session的createQuery()方法能够创建Query实例,参数为HQL。Query对象能够返回各种类型的查询结果,

例如long、String、List<实体类>、List、POJO等。最常用的查询方法有uniqueResult()与list()等。其中uniqueResult()返回单个值,而

list()返回零个或者多个值。

1.直接从实体对象进行查询,即只能查询该对象的所有列

 @SuppressWarnings("unchecked")  
public static void test1(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "from User u";  
    Query query = session.createQuery(hql);  
    List user = query.list();  
    System.out.println("------------SQL执行完毕---------------");  
    for (User us : user) {  
        System.out.println(us.getName());  
    }  
} 

1.2在HQL中,不能使用select * from Student,但是可以使用别名 select stu from Student stu

public void test12() {  
    Session session = HibernateUtils.openSession();  
    Query query = session.createQuery("select stu from Student stu");  
    List stus = query.list();  
    for (Student stu : stus) {  
        System.out.println(stu);  
    }  
}  

1.3查询一个表的记录数(当查询结果唯一时,可以使用uniqueResult())

public void test13(){
    String hql="select count(*) from Student";
    Session session=HibernateUtils.openSession();
    Long countRecord=(Long) session.createQuery(hql).uniqueResult();
    int count=countRecord.intValue();
    System.out.println(count);
}

2.如果想单独查询某一列,可以这样使用

@SuppressWarnings("unchecked")  
public static void test2(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "select name from User u";  
    Query query = session.createQuery(hql);  
    List user = query.list();  
    System.out.println("------------SQL执行完毕---------------");  
    for (String us : user) {  
        System.out.println(us);  
    }  
}  

3.如果想查询某几列的话,注意返回的内容不同,几列就是几个对象,这几个对象放在一个对象数组中

/** 
 * 查询某几列 
 */  
@SuppressWarnings("unchecked")  
public static void test3(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "select id,name from User u";  
    Query query = session.createQuery(hql);  
    List user = query.list();  
    System.out.println("------------SQL执行完毕---------------");  
    for(Object obj : user){  
        Object[] arrObj = (Object[])obj;  
        System.out.println(arrObj[0] + "\t-->\t" + arrObj[1]);  
    }  
} 

关于查询某几列的详细说明:

 Query的list()方法返回java.util.List对象。List中一般存储完整的实体类对象。例如select  name from User u 会将所有的User属性都查询出来,

即包含User类的所有及时加载的属性(注意:此时懒加载的属性并不会加载)。

对于有些查询,我们只需要查询几个属性就够了,而不需要查询所有的实体类属性。这时候可以在HQL中指定要返回的部分。查询部分属性时,

返回结果仍然是List类型,里面可能是单个的Object,也可能是Object[]数组,还可能是List对象与Map对象,返回什么类型数据,由HQL语句决定。

Hibernate HQL查询 查询某几列_第1张图片

Hibernate HQL查询 查询某几列_第2张图片

你可能感兴趣的:(Hibernate,HQL)