Hibernate查询——HQL,包括分页查询
hql:HibernateQueryLanguage提供一种查询语言。和sql相似
区别:sql操作数据库表和字段,hql操作实体类和属性
常用的hql语句
使用hql查询操作的时候,使用Query对象
hql查询使用步骤
(1):创建Query对象,写hql语句
(2):调用query对象里面的方法得到结果
分类:
1、条件查询
Query query=session.createQuery("from Customer wher cid=? and custName=?");
query.setParameter(0, 1);
query.setParameter(1, "zlj");
java.util.List<Customer> list=query.list();
for (Customer customer : list) {
System.out.println(customer);
}
2、升降序查询
Query query=session.createQuery("from Customer order by cid asc");
java.util.List<Customer> list=query.list();
for (Customer customer : list) {
System.out.println(customer);
}
3、查询所有数据
Query query=session.createQuery("from Customer");
java.util.List<Customer> list=query.list();
for (Customer customer : list) {
System.out.println(customer);
}
4、投影查询
Query query=session.createQuery("select cid,custname from Customer");
java.util.List<Customer> list=query.list();
for (Customer customer : list) {
System.out.println(customer);
}
5、聚集函数
常用的聚集函数
count,sum,avg,max,min
Query query=session.createQuery(" select count(*) from Customer ");
Object object=query.uniqueResult();
System.out.println(object);
6、重点来了(重点)
public void testcxfenyeQueryUser(int pageSize) {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.getCurrentSession();// 3、打开Session
Transaction ts = null;
try{
ts = session.beginTransaction();// 4、开始一个事务
// 5、持久化操作
Query query = session.createQuery("from User");
List<User> users = query.list();
int UserCount = users.size();
int pageCount = 0;
pageCount = UserCount/pageSize;
if(UserCount % pageSize != 0) {
pageCount = pageCount+1;
}
for(int i =0; i< pageCount; i ++) {
System.out.println("第"+ i + "页:");
System.out.println("--------------------");
query.setFirstResult(i*pageSize);
query.setMaxResults(pageSize);
List<User> users1 = query.getResultList();
for(User u: users1) {
System.out.println(u.toString());
}
}
ts.commit();// 6、 提交事务
}catch(Exception e){
if (ts != null){ ts.rollback();}
e.printStackTrace();
}
}
然后调用方法 运行代码:
结果: