Hibernate入门第八讲——Hibernate的其他API

Query

你可从度娘上可看到这样的文字:
在这里插入图片描述
我们主要通过Query完成查询操作,通过Query即可以执行HQL语句,如下:

Query query = session.createQuery("HQL语句");

又可以执行本地SQL语句:

SQLQuery sqlQuery = session.createSQLQuery("本地SQL语句");

温馨提示:SQLQuery是Query的子类。

查询所有操作——使用HQL

我们这儿在com.meimeixia.hibernate.demo01包下创建一个单元测试类——TestQuery.java。使用HQL语句完成查询所有客户的操作,代码如下:

package com.meimeixia.hibernate.demo01;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.meimeixia.hibernate.utils.HibernateUtils;

/**
 * Hibernate的其他API
 * @author liayun
 *
 */
public class TestQuery {

	//使用HQL完成查询所有操作
	@Test
	public void test01() {
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();
		
		String hql = "from Customer";//from后面是类名
		Query query = session.createQuery(hql);
		List<Customer> list = query.list();
		for (Customer customer : list) {
			System.out.println(customer);
		}
		
		tx.commit();
	}
	
}

条件查询

条件查询可以使用where关键字。例如,查询姓王的客户。
Hibernate入门第八讲——Hibernate的其他API_第1张图片
虽然我们可以查询出来,但我们有没有想过姓王的客户即使查出来也只有一个呢,我们有必要把它放在List集合中吗?如果查询结果可以保证就是唯一的,那么我们可以使用Query的uniqueResult()方法来得到一个单独对象。
Hibernate入门第八讲——Hibernate的其他API_第2张图片

分页查询

在执行分页查询时,我们试着向cst_customer表中插入100条记录。
Hibernate入门第八讲——Hibernate的其他API_第3张图片
接下来,就来分页查询,如果说一页显示10条记录,但我们要得到第二页的数据,咋办?
Hibernate入门第八讲——Hibernate的其他API_第4张图片

Criteria

你可从度娘上可看到这样的文字:
在这里插入图片描述
首先我要想使用Criteria,必须得到Criteria,可这么做:

Criteria criteria = session.createCriteria(Xxx.class);

查询所有

例,查询所有客户。

package com.meimeixia.hibernate.demo01;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.meimeixia.hibernate.utils.HibernateUtils;

public class TestCriteria {

	// 查询所有
	@Test
	public void test01() {
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();

		//查询所有
		Criteria criteria = session.createCriteria(Customer.class);
		List<Customer> list = criteria.list();
		for (Customer customer : list) {
			System.out.println(customer);
		}

		tx.commit();
	}

}

条件查询

例,查询姓渣并且客户信息来源为b站的客户。
Hibernate入门第八讲——Hibernate的其他API_第5张图片

分页查询

分页查询操作与Query的方法一样。如果说一页显示10条记录,但我们要得到第二页的数据,咋办?
Hibernate入门第八讲——Hibernate的其他API_第6张图片

小结

我们使用Criteria可以更加面向对象地去操作,它非常适合进行多条件组合查询,但我感觉没什么鸟用!

你可能感兴趣的:(Hibernate框架,Hibernate框架学习)