HQL:
分页查询:
可以将HQL语句放在xxx.hbm.xml文件中
可以只查部分属性, 可以利用对应的构造器,让其返回的是对象的集合。
报表查询:
可以利用GROUP BY对数据进行分组,用HAVING 对分组数据设定约束条件。
迫切左外查询:查询出来的Employee表已经被初始化
左外连接:查询出来的Employee表未初始化,每次使用需要重新查询表进行初始化
from Deptment d left join d.emps;
list()方法返回的集合中存放的是对象数组类型。
select distinct d from Deptment d left join d.emps;
这样查询list()方法返回的集合中就包含Deptment对象。
内连接:不返回表中不符合条件的记录
inner join fetch
inner join同上边相似
HQL中显式的使用迫切左外连接 优先于 映射文件中的配置
QBC查询:
OR查询:使用Disjunction表示
统计查询:使用Projection来表示:可以由Projections的静态方法得到。
添加排序:criteria.addOrder(Order.asc("salary"));
criteria.addOrder(Order.desc("email"));
添加翻页方法:criteria.setFirstResult((pageNo-1)*pageSize)
.setMaxResults(pageSize)
.list();
分页查询:
query.setFirstResult((pageNo - 1)*pageSize) //从第几个开始查询 pageNo:页号 pageSize:每页数据个数
query.setMaxResults(pageSize); //每页的最大个数
命名查询:可以将HQL语句放在xxx.hbm.xml文件中
<query name="salaryEmps"><![CDATA[from Employee e where e.salary > :minsal and e.salary < :maxsal]]></query>
调用Query query=session.getNameQuery("salaryEmps");将值传进来
List<Employee> emps = query.setFloat("minsal",5000)
.setFloat("maxsal",10000)
.list;//获取符合条件的数据
投影查询:可以只查部分属性, 可以利用对应的构造器,让其返回的是对象的集合。
报表查询:
可以利用GROUP BY对数据进行分组,用HAVING 对分组数据设定约束条件。
迫切左外查询:查询出来的Employee表已经被初始化
select distinct d from Deptment d left join fetch d.emps;//去重复,将表Employee和Deptment连接起来。
List<Deptment> depts=query.list();//返回存放实体对象的引用
depts=new ArrayList<>(new LinkedHashSet(depts));//也可以这样去除重复
左外连接:查询出来的Employee表未初始化,每次使用需要重新查询表进行初始化
from Deptment d left join d.emps;
list()方法返回的集合中存放的是对象数组类型。
select distinct d from Deptment d left join d.emps;
这样查询list()方法返回的集合中就包含Deptment对象。
内连接:不返回表中不符合条件的记录
inner join fetch
inner join同上边相似
HQL中显式的使用迫切左外连接 优先于 映射文件中的配置
QBC查询:
//1.创建一个Creteria对象
Criteria critertia=session.createCriteria(Employee.class);
//2.添加查询条件:在QBC中查询条件是用Criterion来表示 Criterion可以通过Restrictions的静态方法得到。
criteria.add(Restrictions.eq("email","SKUMAR"));
criteria.add(Restrictions.gt("salary",5000F));
//3.执行查询:
Employee employee=(Employee)criteria.uniqueResult();
System.out.println(employee);
AND查询:使用Conjunction表示,Conjunction本身就是一个Criterion对象,且其中还可以添加Criterion对象OR查询:使用Disjunction表示
统计查询:使用Projection来表示:可以由Projections的静态方法得到。
添加排序:criteria.addOrder(Order.asc("salary"));
criteria.addOrder(Order.desc("email"));
添加翻页方法:criteria.setFirstResult((pageNo-1)*pageSize)
.setMaxResults(pageSize)
.list();