Hibernate查詢簡單案例
阿新 • • 發佈:2019-02-16
分頁
查詢所有public List<Emp> findEmpSplit(int cp, int ps) { Session session = null; try { session = HibernateSessionFactory.getMySession(); String hql = "from Emp"; Query query = session.createQuery(hql); query.setFirstResult((cp-1)*ps);//起始行數 query.setMaxResults(ps);//查詢最大行數 return query.list(); } catch (Exception e) { e.printStackTrace(); }finally{ HibernateSessionFactory.close(); } return null; }
以構造器方式查詢public List<Emp> findall() { Session session = null; try { session = HibernateSessionFactory.getMySession(); //hql : hibernate query language,hibernate查詢語句 //面向物件的查詢語言 //sql : 面向的是資料庫,針對表和相應的欄位 //sql語法:select 欄位名... from 表名 where 條件 group by 欄位名 having 條件 order by 欄位名 asc/desc limit 開始行數,最大行數 //hql : 面向的是物件,針對實體類和對應的屬性名 //hql語法:select 屬性名... from 實體類名 where 條件 groupby ,order by.... //hql裡面,只有from是必須的,其他都可以不寫; //hql裡面,因為針對的是實體類和屬性名,所以大小寫敏感 String hql = "from Emp"; Query query = session.createQuery(hql); return query.list(); } catch (Exception e) { e.printStackTrace(); }finally{ HibernateSessionFactory.close(); } return null; }
連表public List<Emp> findSalByConstruct() { Session session = null; try { session = HibernateSessionFactory.getMySession(); String hql = "select new Emp(empno,ename,sal) from Emp"; Query query = session.createQuery(hql); return query.list(); } catch (Exception e) { e.printStackTrace(); }finally{ HibernateSessionFactory.close(); } return null; }
public List<Emp> findSalByDept(String dname) {
Session session = null;
try {
session = HibernateSessionFactory.getMySession();
//這裡的別名必須指定,哪怕別名和屬性名一致
String hql = "select e.empno as empno,e.ename as ename,e.sal as sal from Emp e,Dept d where e.dept.deptno=d.deptno and d.dname=?";
Query query = session.createQuery(hql);
query.setParameter(0, dname);
query.setResultTransformer(new AliasToBeanResultTransformer(Emp.class));
return query.list();
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.close();
}
return null;
}
聚合函式
public List<Object[]> countEmpSalByDept() {
Session session = null;
try {
session = HibernateSessionFactory.getMySession();
String hql = "select d.dname,max(e.sal),min(e.sal),avg(e.sal) as avgsal,count(e.empno) from Emp e,Dept d where e.dept.deptno=d.deptno group by d.dname order by avgsal desc";
Query query = session.createQuery(hql);
//SQLQuery q = session.createSQLQuery("SQL");
//Query query = session.getNamedQuery("xxx")
return query.list();
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.close();
}
return null;
}