@Test publicvoidtestHql1(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("from Student "); List students = res.list(); System.out.println(students); } @Test publicvoidtestHql1(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("select id from Student "); List students = res.list(); System.out.println(students); }
注意: select 不支持 *,查询指定列的时候,返回的是对象数组 。
封装对象
查询指定列返回对象数组不操作,可以直接将其封装为对象。
1 2 3 4 5 6 7 8 9 10
/** * 封装对象 */ @Test publicvoidtestHql2(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("select new java.lang.Integer(id) from Student"); List students = res.list(); System.out.println(students); }
2.3.2 条件查询
占位符
1 2 3 4 5 6 7 8 9
/** 占位符查询 */ @Test publicvoidtestHql3(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("from Student where id=?1"); res.setParameter(1,1); List students = res.list(); System.out.println(students); }
? 后面要跟数字,不跟数字的形式在新版本已经不被支持了。
命名参数
1 2 3 4 5 6 7 8 9
/** 命名参数 */ @Test publicvoidtestHql4(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("from Student where id=:id"); res.setParameter("id",1); List students = res.list(); System.out.println(students); }
范围查询
1 2 3 4 5 6 7 8
/** 范围查询 */ @Test publicvoidtestHql5(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("from Student where id between 1 and 3"); List students = res.list(); System.out.println(students); }
模糊查询
1 2 3 4 5 6 7 8 9
/** 模糊查询 */ @Test publicvoidtestHql6(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("from Student where name like ?1"); res.setParameter(1,"%%"); List students = res.list(); System.out.println(students); }
/** 聚合查询 */ @Test publicvoidtestHql7(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("select count(*) from Student"); Object students = res.getSingleResult(); students = res.uniqueResult(); System.out.println(students); }
2.3.4 分组查询
1 2 3 4 5 6 7 8
/** 分组查询 */ @Test publicvoidtestHql8(){ Session session = HibernateUtil.getSession(); Query res = session.createQuery("select name,count(*) from Student group by name"); List students = res.list(); System.out.println(students); }