Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性。 HQL 查询被 Hibernate 翻译为传统的 SQL 查询从而对数据库进行操作。例如:
public void queryUsers() {
SessionFactory sf = null;
Session s = null;
Transaction t = null;
try {
sf = HibernateUtil.getSessionFactory();
s = sf.getCurrentSession();
t = s.beginTransaction();
Query<User> query = s.createQuery("from User");
List<User> users = query.list();
for(User user:users){
System.out.println(user);
}
t.commit();
}catch(Exception e) {
if(t!=null) {
t.rollback();
}
e.printStackTrace();
}
}
hql的单个属性查询的hql语句和sql语句查询单个属性类似,hql语句查询时使用的单个属性与JavaBean中的字段一致
public class QueryTest extends Test {
public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
List students=session.createQuery("select name from Student").list;
for(Iterator iter=student.iterator();iter.hasNext();){
String name=(String)iter.next();
System.out.println(name);
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().commit();
}finally{
HibernateUtils.closeSession(session);
}
}
以及实例化查询
public void queryNewUser() {
SessionFactory sf = null;
Session s = null;
Transaction t = null;
try {
sf = HibernateUtil.getSessionFactory();
s = sf.getCurrentSession();
t = s.beginTransaction();
Query<User> query = s.createQuery("select new User(u.id,u.username,u.password,u.sex,u.age) from User u");
List<User> users = query.list();
for(User user:users){
System.out.println(user);
}
t.commit();
}catch(Exception e) {
if(t!=null) {
t.rollback();
}
e.printStackTrace();
}
}
