Hibernate4详解(四)

2014-11-24 10:41:08 · 作者: · 浏览: 3
elect * from
// ( select e.*, rownum rn from ( select * from emp ) e where rownum <= 10 )
// where rn > 1
@Test
public void test_pagination() {
int pageNo = 1; // 当前页数
int pageSize = 5; // 每页显示条数

SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "from Emp";
Query query = session.createQuery(hql);
query.setFirstResult((pageNo - 1) * pageSize);
query.setMaxResults(pageSize);
query.setCacheable(true); // 设置缓存
List list = query.list();
show(list);
session.close();
}

/** 查询结果是唯一值 */
@Test
public void test_uniqueResult() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "from Emp where empno=7369";
Query query = session.createQuery(hql);
Emp emp = (Emp) query.uniqueResult();
System.out.println(emp);
session.close();
}

/** 投影查询 */
@Test
public void test_projection1() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select empno from Emp"; // 查询单值
Query query = session.createQuery(hql);
List list = query.list();
for (Integer empno : list) {
System.out.println(empno);
}
session.close();
}

/** 投影查询 */
@Test
public void test_projection2() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select empno,ename,hiredate,sal from Emp"; // 查询多值
Query query = session.createQuery(hql);
List list = query.list();
for (Object[] arr : list) {
System.out.println(arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[3]);
}
session.close();
}

/** 投影查询 */
@Test
public void test_projection3() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select new Emp(empno,ename,hiredate,sal) from Emp"; // 查询多值 封装在一个对象中
Query query = session.createQuery(hql);
List list = query.list();
for (Emp emp : list) {
System.out.println(emp.getEmpno() + "\t" + emp.getEname() + "\t" + emp.getHiredate() + "\t" + emp.getSal());
}
session.close();
}

/** 投影查询 */
@Test
public void test_projection4() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select new Map(empno,ename,hiredate,sal) from Emp"; // map 大小都都可以, 查询多值 封装在一个Map中
Query query = session.createQuery(hql);
List list = query.list();
for (Map map : list) {
System.out.println(map.get("0") + "\t" + map.get("1") + "\t" + map.get("2") + "\t" + map.get("3"));
}
session.close();
}

/** 投影查询 (使用别名) */
@Test
public void test_projection5() {
SessionFactor