Hibernate的HQL选择、投影、排序、分页、聚合分组、连接查询、QBC分页、排序、条件、离线查询、hibernate整合c3p0连接池、事务隔离级别、hibernate中设置隔离级别-day04

第一节 HQL查询

1.1 HQL简介

  • HQL(Hibernate Query Language) 描写对象操作的一种查询语言,Hibernate特有。
  • HQL的语法与SQL基本一致,不同的是HQL是面向对象的查询,查询的是对象和对象中的属性。
  • HQL的关键字不区分大小写,但类名和属性区分大小写
  • 语法示例:
    SELECT 别名/属性名/表达式
    FROM 实体 AS 别名
    WHERE 过滤条件
    GROUP BY 分组条件
    HAVING 分组后的结果的过滤条件
    ORDER BY 排序条件

1.2 案例1:查询所有客户

  • 在day03的基础上,进一步使用hql。
	//案例1:查询所有客户
	@Test
	public void test1(){
   
		Session session = HibernateUtils.openSession();
		//查询所有客户
		Query query = session.createQuery("from Customer");
		//查询后的结果会封装到一个list集合中
		List<Customer> list = query.list();
		//遍历
		for (Customer customer : list) {
   
			System.out.println(customer.getCustomerName());
		}
		session.close();
	}

在这里插入图片描述

在这里插入图片描述

1.3 案例2:选择查询

	//案例2:选择查询
	@Test
	public void test2(){
   
		Session session = HibernateUtils.openSession();
		//查询客户带条件
		//Query query = session.createQuery("from Customer where id = 1");
		Query query = session.createQuery("from Customer where id = ? ");

		//起别名
		//Query query1 = session.createQuery("from Customer c where c.id = ? ");
		Query query1 = session.createQuery("select c from Customer c where c.id = ? ");
		//设置参数从0开始
		query.setParameter(0,1);
		query1.setParameter(0,2);

		//查询后的结果会封装到一个list集合中
		List<Customer> list = query.list();
		//遍历
		for (Customer customer : list) {
   
			System.out.println(customer.getCustomerId()+":"+customer.getCustomerName());
		}

		//只获取一条记录
		Customer customer1 = (Customer) query1.uniqueResult();
		System.out.println(customer1.getCustomerId()+":"+customer1.getCustomerName());

		session.close();
	}

在这里插入图片描述

1.4 案例3:投影查询

	//案例3:投影查询1
	@Test
	public void test3(){
   
		Session session = HibernateUtils.openSession();
		//指定查询字段
		Query query = session.createQuery("select  c.id,c.customerName from Customer c ");

		//这种查询出来的结果是一个数组类型的集合
		List<Object[]> list = query.list();

		//遍历集合,集合中的每一个元素是一个数组
		for (Object[] objects : list) {
   
			for (Object object : objects) {
   
				System.out.println(object);
			}
			System.out.println("------------");
		}

		session.close();
	}

在这里插入图片描述

	//案例3:投影查询2
	@Test
	public void test4(){
   
		Session session = HibernateUtils.openSession();
		//指定查询字段,封装到集合对象中,但是Customer必须要提供对应的构造方法
		Query query = session.createQuery("select new Customer(c.id,c.customerName) from Customer c ");

		//这种查询出来的结果是Customer集合
		List<Customer> list = query.list();

		//遍历
		for (Customer customer : list) {
   
			System.out.println(customer);
		}

		session.close();
	}

在这里插入图片描述

1.5 案例4:排序

	//案例4:排序
	@Test
	public void test5(){
   
		Session session = HibernateUtils.openSession();
		//asc升序  desc降序
		List<Customer> list = session.createQuery("from Customer c order by c.id desc ").list();
		//需要Customer提供对应的构造方法,否则报错
		//List<Customer> list = session.createQuery("select new Customer(c.id,c.customerName) from Customer c order by c.id desc ").list();
		//遍历
		for (Customer customer : list) {
   
			System.out.println(customer
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值