HQL查询数据
简单查询
from 实体类名
as关键字可以省略
查询所有学生,并按照id升序排列
from Student as stu order by stu.id asc
属性查询
查询学生的姓名和年龄
select stu.name,stu.age from Student as stu
聚集函数
select count(stu) from Student stu
select ave(stu.score) from Student stu
分组查询
select employee.dept.name,count(*) from Employee as employee group by employee.dept
动态查询
将结果封装成对象
select new Person(stu.name,stu.age) from Student stu;
在项目中需要有
Person
类,同时Person
类中有Person(String name,Integer age)
构造函数
分页查询
public void pagedSearch(int pageIndex,int pageSize){
String hql="from Student";
Query query = session.createQuery(hql);
int startIndex = (pageIndex-1)*pageSize;
query.setFirstResult(startIndex);//设定从那个对象开始
query.setMaxResults(pageSize);//设置一次返回多少对象
List list = query.list();
}
条件查询
//简单参数
String hql="FROM User where id=?";
User user= (User)session.createQuery(hql)
.setParameter(0, 2).list();
//标签参数
String hql="FROM User where id = :id";
List<User> list= session.createQuery(hql)
.setParameterList("id", 2)
.list();
//集合参数
String hql="FROM User where id IN (:ids)";
List<User> list= session.createQuery(hql)
.setParameterList("ids", new Object[]{1,3,4})
.list();
连接查询
QBC查询数据
使用HQL查询,和sql查询类似,但是仍然需要编写各种sql语句,很是繁琐
QBC主要由Criteria接口实现