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);
}
}
}