05-Hibernate查询语句

05-Hibernate查询语句

  • Hibernate中批量查询(概述)

  • HQL查询 Hibernate Query Language

    • 特点: Hibernate 独家查询语言 属于面向对象查询语言

    • 基本查询

      @Test
      	//基本查询
      	public void fun1(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1.书写hql语句
      		//String hql = "from com.qingzi.domain.Customer";
      		String hql = "from Customer";	//查询所有Customer对象
      			//2.根据hql语句创建查询对象
      		Query query = session.createQuery(hql);
      			//3.根据查询对象获得查询结构
      		List<Customer> list = query.list();	//返回list结果
      //		query.uniqueResult(list);		//接收唯一查询结果
      		System.out.println(list);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 条件查询

      @Test
      	//条件查询
      	//hql语句中,不可能出现任何数据库中相关的信息的
      	public void fun2(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1.书写hql语句
      		String hql = "from Customer where cust_id = 1";	//查询id为1的Customer对象
      			//2.根据hql语句创建查询对象
      		Query query = session.createQuery(hql);
      			//3.根据查询对象获得查询结构
      		Customer c = (Customer) query.uniqueResult();
      		System.out.println(c);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
      @Test
      	//条件查询
      	//问号占位符
      	public void fun3(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1.书写hql语句
      		String hql = "from Customer where cust_id = ?";	//查询id为1的Customer对象
      			//2.根据hql语句创建查询对象
      		Query query = session.createQuery(hql);
      		//设置参数
      		//query.setLong(0, 1l);
      		query.setParameter(0, 1l);
      			//3.根据查询对象获得查询结构
      		Customer c = (Customer) query.uniqueResult();
      		System.out.println(c);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
      @Test
      	//条件查询
      	//命名占位符
      	public void fun4(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1.书写hql语句
      		String hql = "from Customer where cust_id = :cust_id";	//查询id为1的Customer对象
      			//2.根据hql语句创建查询对象
      		Query query = session.createQuery(hql);
      		//设置参数
      		query.setParameter("cust_id", 1l);
      			//3.根据查询对象获得查询结构
      		Customer c = (Customer) query.uniqueResult();
      		System.out.println(c);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 条件查询–>分页查询

      @Test
      	//条件查询
      	//分页查询
      	public void fun5(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1.书写hql语句
      		String hql = "from Customer";	//查询所有Customer对象
      			//2.根据hql语句创建查询对象
      		Query query = session.createQuery(hql);
      		//设置参数
      		query.setFirstResult(1);//设置从第几页开始
      		query.setMaxResults(2);//设置显示一页的最大显示数目
      			//3.根据查询对象获得查询结构
      		List<Customer> list  = query.list();
      		System.out.println(list);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	
      
  • criteria查询

    • criteria特点: 无语句面向对象查询
      在这里插入图片描述

    • 基本查询

      @Test
      	//基本查询
      	public void fun1(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//查询所有的Customer对象
      			Criteria criteria = session.createCriteria(Customer.class);
      			
      			List<Customer> list = criteria.list();
      			System.out.println(list);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 条件查询

      @Test
      	//条件查询
      	//hql语句中,不可能出现任何数据库中相关的信息的
      		/**
      		 *  >       gt
      		 *  >=      ge
      		 *  <       lt
      		 *  <=      le
      		 *  ==      eq
      		 *  !=      ne
      		 *  in      in
      		 *  between and   between
      		 *  like           like
      		 *  is not null     is not null
      		 *  is null        is null
      		 *  or             or
      		 *  and           and
      		 */
      	public void fun2(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//查询所有的Customer对象
      			Criteria criteria = session.createCriteria(Customer.class);
      			//添加查询参数=>查询cust_id为1的customer对象
      			criteria.add(Restrictions.eq("cust_id", 1l));
      			//执行查询获得结果
      			Customer c = (Customer) criteria.uniqueResult();
      			///List<Customer> list = criteria.list();
      			System.out.println(c);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 条件查询–>分页查询、

      @Test
      	//条件查询
      	public void fun3(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//查询所有的Customer对象
      			Criteria criteria = session.createCriteria(Customer.class);
      			//设置分页信息 limit?,?
      			criteria.setFirstResult(1);
      			criteria.setMaxResults(2);
      			
      			//执行查询
      			List<Customer> list = criteria.list();
      			System.out.println(list);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 查询总记录数

      @Test
      	//查询总记录数
      	public void fun4(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//查询所有的Customer对象
      			Criteria criteria = session.createCriteria(Customer.class);
      			//设置查询的聚合函数  = >总行数
      			criteria.setProjection(Projections.rowCount());
      			
      			//执行查询
      			Long count = (Long) criteria.uniqueResult();
      			System.out.println(count);
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
  • 原生sql查询

    • 基本查询

      1. 返回数组List

        @Test
        	//基本查询
        	public void fun1(){
        		//1、获得Session
        		Session session  = HibernateUtils.openSession();
        		//2、控制事务
        		Transaction tx = session.beginTransaction();
        		//3、执行操作
        		//--------------------------------------
        			//1. 书写sql语句
        			String sql = "select * from cst_customer";
        			//2. 创建sql查询对象
        			SQLQuery query = session.createSQLQuery(sql);
        			//3.调用方法查询结果
        			List<Object[]> list = query.list();
        			for (Object[] objects : list) {
        				System.out.println(Arrays.toString(objects));
        			}
        		
        		//--------------------------------------
        		//4、提交事务、关闭事务
        		tx.commit();
        		session.close();//游离状态|托管状态, 有id,没有关联
        	}
        
      2. 返回对象list

        @Test
        	//基本查询
        	public void fun2(){
        		//1、获得Session
        		Session session  = HibernateUtils.openSession();
        		//2、控制事务
        		Transaction tx = session.beginTransaction();
        		//3、执行操作
        		//--------------------------------------
        			//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);
        		
        		//--------------------------------------
        		//4、提交事务、关闭事务
        		tx.commit();
        		session.close();//游离状态|托管状态, 有id,没有关联
        	}
        
    • 条件查询

      @Test
      	//条件查询
      	public void fun3(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1. 书写sql语句
      			String sql = "select * from cst_customer where cust_id = ?";
      			
      			//2. 创建sql查询对象
      			SQLQuery query = session.createSQLQuery(sql);
      			
      			query.setParameter(0, 1);
      			//指定结果集封装到哪个对象中
      			query.addEntity(Customer.class);
      			
      			//3. 调用方法查询结果
      			List<Customer> list = query.list();
      			System.out.println(list);
      		
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
    • 分页查询

      @Test
      	//分页查询
      	public void fun4(){
      		//1、获得Session
      		Session session  = HibernateUtils.openSession();
      		//2、控制事务
      		Transaction tx = session.beginTransaction();
      		//3、执行操作
      		//--------------------------------------
      			//1. 书写sql语句
      			String sql = "select * from cst_customer limit ?,?";
      			
      			//2. 创建sql查询对象
      			SQLQuery query = session.createSQLQuery(sql);
      			
      			query.setParameter(0, 0l);
      			query.setParameter(1, 1l);
      			//指定结果集封装到哪个对象中
      			query.addEntity(Customer.class);
      			
      			//3. 调用方法查询结果
      			List<Customer> list = query.list();
      			System.out.println(list);
      		
      		//--------------------------------------
      		//4、提交事务、关闭事务
      		tx.commit();
      		session.close();//游离状态|托管状态, 有id,没有关联
      	}
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值