1. 程式人生 > >Hibernate查詢簡單案例

Hibernate查詢簡單案例

分頁

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;
	}