hibernate之Hql

本文详细介绍了Hibernate的Hql查询语言,包括Hql的基本概念、与SQL的区别、结果集类型、占位符使用、连接查询、聚合函数以及分页操作。通过实例演示了Hql的各种查询方式,探讨了分页查询的改进方法,旨在帮助读者更好地掌握面向对象的查询语言。
摘要由CSDN通过智能技术生成

Hql基本知识

1.什么是Hql

HQL是Hibernate Query Language的缩写,提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。

2.Hql和Sql的区别

1、sql 面向数据库表查询。

2、hql 面向对象查询。

3、hql : from 后面跟的 类名+类对象 where 后 用 对象的属性做条件。

4、sql: from 后面跟的是表名 where 后 用表中字段做条件查询。

5、在Hibernate中使用查询时,一般使用Hql查询语句。

6、HQL,即Hibernate的查询语言跟SQL非常相像。不过HQL与SQL的最根本的区别,就是它是面向对象的。

7.大小写敏感:因为HQL是面向对象的,而对象类的名称和属性都是大小写敏感的,所以HQL是大小写敏感的。

8sql的占位符是?,而hql的是命名参数

3.返回的结果集

下面多种结果结果,我们一个使用的也就2,3个而已
3.1方法多个对象

@Test
	public void testList1() {
   
		Query query = session.createQuery("from Book");
		List<Book> list = query.list();
		for (Book b : list) {
   
			System.out.println(b);
		}
	}

结果:

Book [bookId=1, bookName=西游记, price=50.0]
Book [bookId=2, bookName=红楼梦, price=50.0]
Book [bookId=3, bookName=水浒, price=50.0]
Book [bookId=4, bookName=三国演义, price=50.0]
Book [bookId=5, bookName=斗罗大陆, price=10.0]
Book [bookId=6, bookName=洞中强者, price=10.0]

3.2返回单个列段,用字符串就可以接收

@Test
	public void testList2() {
   
		Query query = session.createQuery("select b.bookName as ss from Book b");
		List<String> list = query.list();
		for (String b : list) {
   
			System.out.println(b);
		}
	}

结果:

西游记
红楼梦
水浒
三国演义
斗罗大陆
洞中强者

3.3查两个列段及以上,默认返回的是Object【】

@Test
	public void testList3() {
   
		Query query = session.createQuery("select b.bookId,b.bookName as ss from Book b");
		List<Object[]> list = query.list();
		for (Object[] b : list) {
   
			System.out.println(Arrays.toString(b));
		}
	}

结果:

[1, 西游记]
[2, 红楼梦]
[3, 水浒]
[4, 三国演义]
[5, 斗罗大陆]
[6, 洞中强者]

3.4集合(注意map是函数,所以不区分大小写,返回的是map集合)

@Test
	public void testList4() {
   
		Query query = session.createQuery("select new mAp(b.bookId,b.bookName) from Book b");
		List<Map> list = query.list();
		for (Map b : list) {
   
			System.out.println(b);
		}
	}

结果:

{
   0=1, 1=西游记}
{
   0=2, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值