hibernate的HQL

HQL是Hibernate Query Language缩写, 语法很像SQL语法,以完全面向对象的方式操作数据库
HQL对象导航方式
Hql可以实现对象导航查询。
注意:如果使用投影查询,得到List中是舜时态对象,不能使用对象导航。
HQL关联查询
因为经过测试:
HQL对hbm.xml设置 fetch参数无效
HQL对hbm.xml设置lazy=true,lazy=false有效
所以通过HQL实现fetch="join"的功能

package com.zking.hibernate.test;

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 com.zking.hibernate.etity.Book;
import com.zking.hibernate.util.HibernateUtil;

public class Test {

	private Session session;
	private Transaction transaction;
	@Before
	public void before() {
		session =  HibernateUtil.getCurrentSession();
		transaction = session.beginTransaction();
	}
	@After
	public void after() {
		transaction.commit();
		session.close();
	}
	

	/**
	 * hlq查询所有
	 */
	@org.junit.Test
	public void run1() {
		String hql = " from Book";
		Query query = session.createQuery(hql);
		List<Book> list = query.list();
		System.out.println(list.toString());
	}
	/**
	 * 	查单个列段
	 * 
	 */
	@org.junit.Test
	public void run2() {
		String hql = " select book_name from Book";
		Query query = session.createQuery(hql);
		List<Book> list = query.list();
		System.out.println(list.toString());
	}
	
	/**
	 * 	查多例
	 * 
	 */
	@org.junit.Test
	public void run3() {
		String hql = " select book_name,book_price from Book";
		Query query = session.createQuery(hql);
		List<Object[]> list = query.list();
		for(Object[] book : list) {
			System.out.println(Arrays.toString(book));
		}
	}
	/**
	 * map集合 select new map
	 * 
	 */
	@org.junit.Test
	public void run4() {
		String hql = " select new  map(book_name,book_price) from Book";
		Query query = session.createQuery(hql);
		List<Map> list = query.list();
		for(Map book : list) {
			System.out.println(book);
		}
	}
	/**
	 * 参数构造方法
	 * 
	 */
	@org.junit.Test
	public void run5() {
		String hql = "select new Book(book_id,book_name) from Book";
		Query query = session.createQuery(hql);
		List<Book> list = query.list();
		for(Book book : list) {
			System.out.println(book);
		}
	}
	/**
	 * 占位符
	 * 
	 */
	@org.junit.Test
	public void run6() {
		String hql = "from Book where book_id = :bookid";
		Query query = session.createQuery(hql);
		query.setParameter("bookid", 1);
		Book book = (Book) query.getSingleResult();
		System.out.println(book);
	}
	/**
	 * 连表查询
	 * 
	 */
	@org.junit.Test
	public void run7() {
		String hql = "select o.order_no,ol.product_id from Order o,OrderItem ol where o.order_id = ol.order.order_id";
		List<Object[]> list = session.createQuery(hql).list();
		for (Object[] lists : list) {
			System.out.println(Arrays.toString(lists));
		}
	}
	/**
	 * 
	 * 聚合函数
	 * 
	 */
	@org.junit.Test
	public void run8() {
		String hql = "select count(*) from Book";
		Long query = (Long) session.createQuery(hql).getSingleResult();
		System.out.println("66"+query);
	}
	/**
	 * 分页
	 * 
	 */
	@org.junit.Test
	public void run9() {
		String hql = "from Book";
		int page = 2;//第几页
		int max = 1;//多少条
		Query query = session.createQuery(hql);
		query.setFirstResult((page-1)*max);
		query.setMaxResults(max);
		List<Book> list = query.list();
		for(Book books : list) {
			System.out.println(books);
		}
		
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值