1.hql查询
(1).List<Classes> classList = session.createQuery("from classes").list();
(2).List<Classes> classList = session.createQuery("select cid,cname from classes").list();
(3).List<Classes> classList = session.createQuery("select new domain.Classes(cid,cname) from classes").list();
(4).Query query = session.createQuery("from classes where cid = ?");
query.setLong(0,1L);
Classes class = (Classes)query.uniqueResult();
(5).Query query = session.createQuery("from classes where cid = :cid");
query.setLong("cid",1L);
Classes class = (Classes)query.uniqueResult();
(6).查询个数
Query query = session.createQuery("select count(*) from classes");
(7).设置query最大结果集
Query query = session.createQuery("from classes");
query.setMaxResult(5);
(8).结果集的第一个数据、设置query最大结果集实现分页查询效果
Query query = session.createQuery("from classes");
query.setFirstResult(3); //下标从0开始
query.setMaxResult(5);
List<Classes> classesList = query.list();
for(Classes class:classesList){
System.out.println(class.getCid());
}
(9)equal实现一对多
^1.session.createQuery("from Classes c,Student s where c.cid = s.classes.cid");
^2.session.createQuery("select c.cname,s.sname from Classes c,Student s where c.cid = s.classes.cid");
^3.session.createQuery("select new domain.ClassView(c.cname,s.sname) from Classes c,Student s where c.cid = s.classes.cid");
(10).一对多:内连接
Query query = session.createQuery("from Classes c inner join c.student s");
(11).一对多:迫切内连接
Query query = session.createQuery("from Classes c inner join fetch c.student s");
Query query = session.createQuery("from Student s inner join fetch s.classes c");
注:(1).用fetch就不能用select
(2).内连接与迫切内连接的区别
内连接返回的list中为一个个数组;
迫切内连接返回的list中为一个个对象
(12).多对多
Query query = session.createQuery("from Student s left outer join fetch s.course c");
Query query = session.createQuery("from Course c left outer join fetch c.students s");
注:左外连接和内连接的区别:
内连接可以理解成两个表的交集+两个表各自独自的部分
左外连接可以理解成两个表的交集+左边独自的部分
(13).条件查询(除了在sql里写where之外,还有专门的条件查询语句)
^1.List<Classes> classList = session.createCriteria(Classes.class).list();
^2.Classes classes = (Classes)session.createCriteria(Classes.class).add(Restriction.eq("cid",1L)).uniqueResult();
^3.Restriction.like/or/in
^4.add(null).add(null).add(null)