javaEE Hibernate, 原生SQL查询语句, createSQLQuery()

HQL查询语句:一般用于多表但不复杂的查询。

Criteria查询语句:一般用于单表查询。

原生SQL语句:一般用于复杂的查询。


Test.java:

package cn.xxx.g_sql;

import java.util.Arrays;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import cn.xxx.domain.Customer;
import cn.xx.utils.HibernateUtils;

//测试原生SQL查询
public class Test {

	@Test
	//基本查询
	public void fun1(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//-------------------------------------------
		//1 书写sql语句
		String sql = "select * from cst_customer";
		
		//2 创建sql查询对象
		SQLQuery query = session.createSQLQuery(sql);
		
		//3 调用方法查询结果
		List<Object[]> list = query.list();
		//query.uniqueResult();
		
		for(Object[] objs : list){ // 每一个数组对应一行记录
			System.out.println(Arrays.toString(objs)); // [1,zhangsan,20,null]
		}
		
		//-------------------------------------------
		tx.commit();
		session.close();
		
	}
	
	@Test
	//基本查询
	public void fun2(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//-------------------------------------------
		//1 书写sql语句
		String sql = "select * from cst_customer";
		
		//2 创建sql查询对象
		SQLQuery query = session.createSQLQuery(sql);
		//指定将结果集封装到哪个对象中
		query.addEntity(Customer.class);
		
		//3 调用方法查询结果
		List<Customer> list = query.list();
		
		System.out.println(list);
		//-------------------------------------------
		tx.commit();
		session.close();
		
	}
	
	@Test
	//条件查询
	public void fun3(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//-------------------------------------------
		//1 书写sql语句
		String sql = "select * from cst_customer where cust_id = ? ";
		
		//2 创建sql查询对象
		SQLQuery query = session.createSQLQuery(sql);
		
		query.setParameter(0, 1l);
		//指定将结果集封装到哪个对象中
		query.addEntity(Customer.class);
		
		//3 调用方法查询结果
		List<Customer> list = query.list();
		
		System.out.println(list);
		//-------------------------------------------
		tx.commit();
		session.close();
		
	}
	
	@Test
	//分页查询
	public void fun4(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//-------------------------------------------
		//1 书写sql语句
		String sql = "select * from cst_customer  limit ?,? ";
		
		//2 创建sql查询对象
		SQLQuery query = session.createSQLQuery(sql);
		
		query.setParameter(0, 0);
		query.setParameter(1, 10);
		//指定将结果集封装到哪个对象中
		query.addEntity(Customer.class);
		
		//3 调用方法查询结果
		List<Customer> list = query.list();
		
		System.out.println(list);
		//-------------------------------------------
		tx.commit();
		session.close();

	}
}


猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/81057025