Hibernate hql总结及BaseDao封装

本文详细介绍了Hibernate的HQL查询语言,包括其与SQL的区别、处理结果集的方式、命名参数的使用、联表查询、聚合函数的应用以及分页操作。此外,还讨论了如何通过BaseDao封装来简化开发,减少冗余代码,并提到了在特定情况下使用原生SQL和视图映射的场景。
摘要由CSDN通过智能技术生成

1.hql:Hibernate Query Language(Hibernate查询语言)

作用:方便进行数据库操作

 

2. hql和sql区别

     1.hql是基于实体属性进行查询的;sql是基于表实体进行查询的

     2.hql区分大小写,关键字不区分大小写;sql不区分大小写

     3.hql是面向对象的查询语言;sql是面向结构的查询语言

     4.hql占位符下标从0开始(目前推荐使用:命名参数);sql占位符下标从1开始

 

3.5种处理hql查询返回的结果集

这里以Book类为实例

        /**
	 * 结果处理一:当结果集为集合,查单个也可以通过这种方式,只不过不需要遍历
	 */
	@Test
	public void testList1() {
		String hql = "from Book";
		Query query = session.createQuery(hql);
		List<Book> list = query.list();
		for (Book book : list) {
			System.out.println(book);
		}
	}
	
	/**
	 * 结果处理二:当结果集为集合,并且只查询其中一列时
	 */
	@Test
	public void testList2() {
		String hql = "select bookName from Book";
		Query query = session.createQuery(hql);
		List<String> list = query.list();
		for (String bname : list) {
			System.out.println(bname);
		}
	}
	
	/**
	 * 结果处理三:当结果集为集合,并且查询两列及两列以上,使用Object[]
	 */
	@Test
	public void testList3() {
		String hql = "select bookId,bookName from Book";
		Query query = session.createQuery(hql);
		List<Object[]> list = query.list();
		for (Object[] book : list) {
			System.out.println(Arrays.toString(book));
		}
	}
	
	/**
	 * 结果处理四:当结果集为集合,并且查询两列及两列以上,使用hibernate内置函数
	 */
	@Test
	public void testList4() {
		String hql = "select new map(bookId,bookName) from Book";
		Query query = session.createQuery(hql);
		List<Map> list = query.list();
		for (Map book : list) {
			System.out.println(book);
		}
	}
	
	/**
	 * 结果处理五:当结果集为集合,并且查询两列及两列以上,使用构造方法进行结果处理,记得提供对应构造器!!
	 */
	@Test
	public void testList5() {
		String hql = "select 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值