java认证辅导之Hibernate数据查询
Hibernate Query Language(HQL) Criteria QueryNative SQL
下面临其分袂进行诠释
Hibernate Query Language:
HQL供给了是十分强年夜的功能,它是针对持久化对象,用取得对象,而一直行update,delete和insert等操作。而且HQL是面向对象的,具备担任,多态和联系关系等特征。
from子句:
from子句是最简单的HQL,例如from Student,也可以写成 select s from Student s。它简单的返回Student类的所有实例。
值得注重的是除了JAVA类和属性的名称外,HQL语句对巨细写不敏感。
select子句:
有时并不需要取得对象的所有属性,这时可以使用select子句进行属性发芽,如select s.name from Student s。
例: public void HQLselectDEMO()
{
TRegister user = new TRegister();
Session session = HibernateUtil.currentSession();
Query query = session.createQuery("select u.userName from TRegister u");
List list = query.list();
for(int i = 0 ; i < list.size(); i++)
{
String name = (String)list.get(i);
System.out.println(name);
}
}如不美观要发芽两个以上的属性桧以数组的体例返回,如下: public void HQLselectDEMO()
{
TRegister user = new TRegister();
Session session = HibernateUtil.currentSession();
Query query = session.createQuery("select u.userName ,u.sex from TRegister u");
List list = query.list();
for(int i = 0 ; i < list.size(); i++)
{
Object obj[] = (Object[])list.get(i);
System.out.println(obj+" 的性别是:"+obj);
}
}
在使用属性发芽时,因为使用对象数组,操作和理解不太便利,如不美观将 一个object[]中所有成员封装成一个对象就便利多了。下面的轨范做了示例: public void HQLselectDEMO()
{
Session session = HibernateUtil.currentSession();
Query query = session.createQuery("select new TRegister(u.userName,u.sex) from TRegister u");
List list = query.list();
for(int i = 0 ; i < list.size(); i++)
{
//Object obj[] = (Object[])list.get(i);
TRegister user = (TRegister)list.get(i);
System.out.println(user.getUserName()+" 的性别是:"+user.getSex());
}
页:
[1]