hibernate之HQL

hibernate之HQL1. 什么是hqlHQL是Hibernate Query Language的缩写查全部2. hql和sql区别/异同HQL SQL类名/属性 表名/列名区分大小写,关键字不区分大小写 ...
摘要由CSDN通过智能技术生成

hibernate之HQL

1. 什么是hql

HQL是Hibernate Query Language的缩写

查全部

2. hql和sql区别/异同

HQL SQL
类名/属性 表名/列名
区分大小写,关键字不区分大小写 不区分大小写
别名 别名 as a
?,从下标0开始计算位置(hibernate5之后不支持) ?,从顺序1开始计算位置
:命名参数 不支持:命名参数
基于安全性的考虑
面向对象的查询语言 面向结构查询语言

注1:QuerySyntaxException:book is not mapped

3. 处理返回的结果集

3.1 单个对象

  select没有逗号

3.2 Object[]

  b.bookId, b.bookName

3.3 Map

  new Map(b.bookId as bid, b.bookName as bname)

3.4 new 构造方法(attr1,attr2)

  new Book(b.bookId, b.price)
单个列段

4. hql中使用占位符

4.1 ?占位符

  从下标0开始计算位置
  hibernate5之后不再支持?占位符

4.2 :命名参数

5. 连接查询

6. 聚合函数

sum
avg
max
min
count

7. hql分页

int page = 2;// 页码:page
int row = 10;// 每页行数:rows
query.setFirstResult((page - 1) * row);// 设置起始记录下标
query.setMaxResults(row);// 设置返回的最大结果集

下面我们来看一些实例

创建一个com.pyc.five.test
HqlTest。java实例

package com.pyc.five.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.pyc.first.util.SessionFactoryUtils;
import com.pyc.four.entity.Book;


public class HqlTest {
   
	private Session session;
	private Transaction transaction;
	
	@Before
	public void before() {
   
		session = SessionFactoryUtils.openSession();
		transaction = session.beginTransaction();
	}
	
	@After
	public void after() {
   
		transaction.commit();
		session.close();
	}
	
	/**
	 * 返回对象(多个)
	 */
	@Test
	public void testList1() {
   
		Query query = session.createQuery("from Book");
		List<Book> list = query.list();
		for (Book b : list) {
   
			System.out.println(b);
		}
	}
	
	/**
	 * 返回单个列段,用字符串就可以接受
	 */
	@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);
		}
	}
	
	/**
	 * 查两个列段及以上,默认返回的是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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值