hibernate_day04_05_hql查询(排序查询)和06_hql查询(分页查询和投影查询)

排序查询
1 hql排序语句写法
(1)from 实体类名称 order by 实体类属性名称 asc/desc

			//Query query = session.createQuery("from Customer order by cid asc");//默认升序
			Query query = session.createQuery("from Customer order by cid desc");


 
	//排序
	@Test
	public void testSelect4(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			//Query query = session.createQuery("from Customer order by cid asc");//默认升序
			Query query = session.createQuery("from Customer order by cid desc");
			
			//2调用方法得到结果
			List<Customer> list = query.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}


06_hql查询(分页查询和投影查询)

1 mysql实现分页

1)使用关键字 limit实现

 

2hql中实现分页

1)在hql操作中,在语句里面不能写limithibernateQuery对象封装两个方法实现分页操作



			//1 创建query对象
			Query query = session.createQuery("from Customer");
			
			//2 设置分页数据
			//2.1 设置开始位置
			query.setFirstResult(3);
			//2.2 设置每页记录数
			query.setMaxResults(3);
			
			//3调用方法得到结果
			List<Customer> list = query.list();


//分页
	@Test
	public void testSelect5(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Query query = session.createQuery("from Customer");
			
			//2 设置分页数据
			//2.1 设置开始位置
			query.setFirstResult(3);
			//2.2 设置每页记录数
			query.setMaxResults(3);
			
			//3调用方法得到结果
			List<Customer> list = query.list();
			
			for (Customer customer : list) {
				System.out.println(customer.getCid()+":::"+customer.getCustName());
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}


投影查询


1 投影查询:查询不是所有字段值,而是部分字段的值


2 投影查询hql语句写法:
(1)select 实体类属性名称1, 实体类属性名称2  from 实体类名称
(2)select 后面不能写 * ,不支持的


3 具体实现
 

	//投影
	@Test
	public void testSelect6(){
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		
		try{
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			tx = session.beginTransaction();
			
			//1 创建query对象
			Query query = session.createQuery("select custName from Customer");
			
			//2调用方法得到结果
			List<Object> list = query.list();
			
			for (Object object : list) {
				System.out.println(object);
			}
			
			tx.commit();
		}catch(Exception e){
			tx.rollback();
		}finally{
			session.close();
			sessionFactory.close();
		}
		
	}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值