Hibernate4详解(五)

2014-11-24 10:41:08 · 作者: · 浏览: 6
y sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select new Map(e.empno as empno ,e.ename as ename ,e.hiredate as hiredate ,e.sal as sal) from Emp as e";
Query query = session.createQuery(hql);
List list = query.list();
for (Map map : list) {
System.out.println(map.get("empno") + "\t" + map.get("ename") + "\t" + map.get("hiredate") + "\t" + map.get("sal"));
}
session.close();
}

/** 去掉重复值 */
@Test
public void test_distinct() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select distinct job from Emp";
Query query = session.createQuery(hql);
List list = query.list();
for (String job : list) {
System.out.println(job);
}
session.close();
}

/** 条件查询 */
@Test
public void test_where1() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();

// String hql = "from Emp where empno=7369 and ename='SMITH'";
// String hql = "from Emp where empno=7369 or ename='ALLEN'";
// String hql = "from Emp where not (ename='SMITH')"; // () 可以不写

// String hql = "from Emp where sal between 3000 and 5000)";
// String hql = "from Emp where sal not between 3000 and 5000)";

// String hql = "from Emp where empno in(7369,7900,7654)";
// String hql = "from Emp where empno not in(7369,7900,7654)";

// String hql = "from Emp where ename like 'S%'";
// String hql = "from Emp where ename not like 'S%'";

// String hql="from Emp where comm is null";
// String hql="from Emp where comm is not null";

// String hql = "from Emp where sal >= 3000 and sal<= 5000)";
// String hql="from Emp where sal <>3000";
String hql = "from Emp where sal !=3000";

Query query = session.createQuery(hql);
List list = query.list();
show(list);
session.close();
}

/** 条件查询 */
@Test
public void test_where2() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();

String hql = "from Emp where ename like ";
Query query = session.createQuery(hql);
query.setString(0, "J%");

// String hql = "from Emp where ename like :ename";
// Query query = session.createQuery(hql);
// query.setString("ename", "J%");

List list = query.list();
show(list);
session.close();
}

/** 统计函数 */
@Test
public void test_statistics1() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
String hql = "select count(*),min(sal),max(sal),avg(sal),sum(sal) from Emp";
Query query = session.createQuery(hql);
Object[] values = (Object[]) query.uniqueResult();
System.out.println("总数:" + values[0]);
System.out.println("最小值:" + values[1]);
System.out.println("最大值:" + values[2]);
System.out.println("平均值:" + values[3]);