Hibernate hql、criteria、sql

hql Demo

package com.cn.hql;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.cn.domain.Customer;
/*学习SessionFactory
 * SessionFactory功能:用于创建操作数据库核心对象session对象的工厂
 *                   简单说功能就一个----创建session对象
 * 注意:1.sessionfactory负责保存和使用所有的配置信息,消耗内存资源非常大
 * 2.sessionFacory属于线程安全的对象设计
 * 
 * 
 * 学习session对象功能
 *表达hibernate框架与数据库之间的连接(会话),session类似于JDBC年代的connection对象,
 *还可以完成对数据库中数据的增删改查操作。
 *session是hibernate操作数据库的核心对象。
 * 
 * 
 * transaction对象
 * 封装了事务的操作
 * 打开事务
 * 提交事务
 * 回滚事务
 */
/*HQL语句中,不可能出现任何数据库相关的信息的
 */
public class Demo {
	@Test
	public void fun1(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
		//1.书写HQL语句
//		String hql= " from com.cn.domain.Customer";//查询所有 Customer对象
		String hql = " from Customer";
		//2根据HQL语句创建查询对象
	    Query query = session.createQuery(hql);
	    //3、根据查询对象获得查询结果
	    List<Customer> list = query.list();
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);

	}

	    //HQL语句条件查询
	@Test
	public void fun2(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
		//1.书写HQL语句
//		String hql= " from com.cn.domain.Customer";//查询所有 Customer对象
//		String hql = " from Customer where cust_id = ?";
		String hql = " from Customer where cust_id = :cust_id";
		//2根据HQL语句创建查询对象
	    Query query = session.createQuery(hql);
	    query.setParameter(0, 1L);
	    query.setParameter("cust_id", 1L);
	    //3、根据查询对象获得查询结果
	     Customer c = (Customer)    query.uniqueResult();
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);
}
	//分页查询 
	@Test
	public void fun3(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
		//1.书写HQL语句
//		String hql= " from com.cn.domain.Customer";//查询所有 Customer对象
		String hql = " from Customer";
		
		//2根据HQL语句创建查询对象
	    Query query = session.createQuery(hql);
	    //设置分页信息limit ?,?
	      query.setFirstResult(0);
	      query.setMaxResults(1);
	    //3、根据查询对象获得查询结果
	     Customer c = (Customer)    query.list();
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);
	}
	}
	

 

 criteria Demo

package com.itheima.criteria;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.cn.domain.Customer;
/*学习SessionFactory
 * SessionFactory功能:用于创建操作数据库核心对象session对象的工厂
 *                   简单说功能就一个----创建session对象
 * 注意:1.sessionfactory负责保存和使用所有的配置信息,消耗内存资源非常大
 * 2.sessionFacory属于线程安全的对象设计
 * 
 * 
 * 学习session对象功能
 *表达hibernate框架与数据库之间的连接(会话),session类似于JDBC年代的connection对象,
 *还可以完成对数据库中数据的增删改查操作。
 *session是hibernate操作数据库的核心对象。
 * 
 * 
 * transaction对象
 * 封装了事务的操作
 * 打开事务
 * 提交事务
 * 回滚事务
 */

//测试c
public class Demo {

	@Test
	public void fun1(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
		  Criteria criteria = session.createCriteria(Customer.class);//查询所有的Customer对象
		  List<Customer>  list = criteria.list();  
		  
//		  Customer c  =(Customer) criteria.uniqueResult();
		
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);

	}
	//条件查询
	@Test
	public void fun2(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
		  Criteria criteria = session.createCriteria(Customer.class);//查询所有的Customer对象
		  //添加查询参数
		  //查询cust_id为1的Customer对象
		  criteria.add(Restrictions.eq("cust_id", 1L));
		  //执行查询,获得结果,
		  List<Customer>  list = criteria.list();  
		  //执行查询,获得结果
		  Customer c  =(Customer) criteria.uniqueResult();
		
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);

	}
	
	//分页查询
		@Test
		public void fun3(){
			//1.创建,调用空参构造
			//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
			Configuration conf = new Configuration().configure();
		    //3.根据配置信息,创建Sessionfactory对象
			SessionFactory sessionFactory = conf.buildSessionFactory();
			//4.获取session
			Session session = sessionFactory.openSession();
			//5.开启事务并获得操作事务的tx对象
			Transaction tx = session.beginTransaction();
			//----------------------------------
			  Criteria criteria = session.createCriteria(Customer.class);//查询所有的Customer对象
			  // limit ?,?
			   criteria.setFirstResult(0);
			   criteria.setMaxResults(1);
			
			//--------------------------------------
			tx.commit();//提交事务
			session.close();
			sessionFactory.close();
			//openSession.get(arg0, arg1);

		}
		
		//分页查询
				@Test
				public void fun4(){
					//1.创建,调用空参构造
					//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
					Configuration conf = new Configuration().configure();
				    //3.根据配置信息,创建Sessionfactory对象
					SessionFactory sessionFactory = conf.buildSessionFactory();
					//4.获取session
					Session session = sessionFactory.openSession();
					//5.开启事务并获得操作事务的tx对象
					Transaction tx = session.beginTransaction();
					//----------------------------------
					  Criteria criteria = session.createCriteria(Customer.class);//查询所有的Customer对象
					 //设置查询的聚合函数=>总行数
					  criteria.setProjection(Projections.rowCount());
					  //执行查询
					  Long count = (Long)criteria.uniqueResult();
					  
					  
				
					//--------------------------------------
					tx.commit();//提交事务
					session.close();
					sessionFactory.close();
				}
}

//>      gt
//>=     ge
//<      lt
//<=     le
//==    eq
//!=    ne
//in    in
//between and   between
//like  like
//is not null isNotNull
//is null   isNUll
//or               
//and

 

sql Demo

package com.itheima.sql;

import java.util.List;

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

import com.cn.domain.Customer;
/*学习SessionFactory
 * SessionFactory功能:用于创建操作数据库核心对象session对象的工厂
 *                   简单说功能就一个----创建session对象
 * 注意:1.sessionfactory负责保存和使用所有的配置信息,消耗内存资源非常大
 * 2.sessionFacory属于线程安全的对象设计
 * 
 * 
 * 学习session对象功能
 *表达hibernate框架与数据库之间的连接(会话),session类似于JDBC年代的connection对象,
 *还可以完成对数据库中数据的增删改查操作。
 *session是hibernate操作数据库的核心对象。
 * 
 * 
 * transaction对象
 * 封装了事务的操作
 * 打开事务
 * 提交事务
 * 回滚事务
 */

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

	//基本查询
	@Test
	public void fun1(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
	    //1.书写sql语句
		String sql = "select * from cst_customer";
		//2.创建sql查询对象
		SQLQuery query = session.createSQLQuery(sql);
		//指定将结果集封装到哪个对象中
		 query.addEntity(Customer.class);
		 List<Customer> list = query.list();
		 System.out.println(list);
		
		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);

	}
	//条件查询
	@Test
	public void fun2(){
		//1.创建,调用空参构造
		//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
		Configuration conf = new Configuration().configure();
	    //3.根据配置信息,创建Sessionfactory对象
		SessionFactory sessionFactory = conf.buildSessionFactory();
		//4.获取session
		Session session = sessionFactory.openSession();
		//5.开启事务并获得操作事务的tx对象
		Transaction tx = session.beginTransaction();
		//----------------------------------
	      String sql = "select * from cst_customer where id = ?";
	      //2.创建sql查询对象
	      SQLQuery sqlQuery= session.createSQLQuery(sql);
	      sqlQuery.setParameter(0, 1l);
	      sqlQuery.addEntity(Customer.class);
	      Customer cus = (Customer)sqlQuery.uniqueResult();
	      System.out.println(cus);

		//--------------------------------------
		tx.commit();//提交事务
		session.close();
		sessionFactory.close();
		//openSession.get(arg0, arg1);

	}
	
	//分页查询
		@Test
		public void fun3(){
			//1.创建,调用空参构造
			//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
			Configuration conf = new Configuration().configure();
		    //3.根据配置信息,创建Sessionfactory对象
			SessionFactory sessionFactory = conf.buildSessionFactory();
			//4.获取session
			Session session = sessionFactory.openSession();
			//5.开启事务并获得操作事务的tx对象
			Transaction tx = session.beginTransaction();
			//----------------------------------
	        String sql = "select * from cst_customer  limit ?,?";
	         //2.创建sql查询对象
	         SQLQuery query = session.createSQLQuery(sql);
	         //从0开始查,一次查取1个
	         query.setParameter(0, 0);
	         query.setParameter(1, 1);
	       //3.指定将结果集放入到哪个对象中
	         query.addEntity(Customer.class);
	         //4.调用方法查询结果
	         List<Customer> list = query.list();
	         System.out.println(list);
			//--------------------------------------
			tx.commit();//提交事务
			session.close();
			sessionFactory.close();
			//openSession.get(arg0, arg1);

		}
		
		//分页查询
				@Test
				public void fun4(){
					//1.创建,调用空参构造
					//2.读取指定主配置文件=>空参加载方法,加载src下的Hibernate.cfg.xml文件
					Configuration conf = new Configuration().configure();
				    //3.根据配置信息,创建Sessionfactory对象
					SessionFactory sessionFactory = conf.buildSessionFactory();
					//4.获取session
					Session session = sessionFactory.openSession();
					//5.开启事务并获得操作事务的tx对象
					Transaction tx = session.beginTransaction();
					//----------------------------------
					  Criteria criteria = session.createCriteria(Customer.class);//查询所有的Customer对象
					 //设置查询的聚合函数=>总行数
					  criteria.setProjection(Projections.rowCount());
					  //执行查询
					  Long count = (Long)criteria.uniqueResult();
					  
					  
				
					//--------------------------------------
					tx.commit();//提交事务
					session.close();
					sessionFactory.close();
				}
}

//>      gt
//>=     ge
//<      lt
//<=     le
//==    eq
//!=    ne
//in    in
//between and   between
//like  like
//is not null isNotNull
//is null   isNUll
//or               
//and

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值