一,Form 语句
示例:
HibernateUtil.hibernateUtil.path="Hibernate-config/hibernate.cfg.xml";
session=HibernateUtil.hibernateUtil.getCurrentSession();
transaction=session.beginTransaction();
String hql="from User";
Query query=session.createQuery(hql);
for (Object u : query.list()) {
System.out.println((User)u);
}
transaction.commit();
测试结果:
关键代码:
String hql="from cn.jbit.pojo.User"全限定名简化为String hql="from User";
关键字大小写没有严格规定像“FROM User”="from User"是相等的,但“User”不等于“user”。
起别名:String hql="from User as user"或者String hql="from User user"。
另一种打印结果集的方式:
String hql="from User";
Query query=session.createQuery(hql);
Iterator<User> iterator= query.iterate();
while(iterator.hasNext()){
User u=iterator.next();
System.out.println(u);
}
不推荐这种方式,访问数据库次数太多了。每一个iteration.next()都会访问一次数据库影响效率。
二,select语句
关键代码
String hql="select user.name from User as user";
Query query=session.createQuery(hql);
测试结果:
三,where 子句
关键代码:
String hql="select user from User as user where user.name='张武'";
Query query=session.createQuery(hql);
测试:
四,使用表达式:
String hql="select user from User as user where lower(user.pwd)='ABC'";
Query query=session.createQuery(hql);
lower()忽略大小写
测试:
五,order by子句
关键代码:
String hql="select user from User as user order by user.id asc";
Query query=session.createQuery(hql);
测试:
关键代码:
String hql="select user from User as user order by user.id desc";
Query query=session.createQuery(hql);
测试:
关键代码:
String hql="select user from User as user order by user.name asc,user.id desc";
Query query=session.createQuery(hql);
测试:
三个实例分别式:asc(顺序id),desc(倒序id),先按name顺序(asc),再按id倒序(desc)。