Hibernate查询——HQL,包括分页查询

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();
		        }
			}

然后调用方法 运行代码:

结果:
Hibernate查询——HQL,包括分页查询

上一篇:【Java Web开发指南】Maven+MyBatis实现增删改查的Demo


下一篇:PV操作的两个例子