hibernate学习笔记(day04)

hibernate学习流程

1. 查询-HQL语法

  1. 基础语法
		String hql = " from  cn.itcast.domain.Customer ";//完整写法
		String hql2 = " from  Customer "; //简单写法
		String hql3 = " from java.lang.Object "; 
		
		Query query = session.createQuery(hql3);
		
		List list = query.list();
		
		System.out.println(list);
  1. 排序
		String hql1 = " from  cn.itcast.domain.Customer order by cust_id asc ";//完整写法
		String hql2 = " from  cn.itcast.domain.Customer order by cust_id desc ";//完整写法
		
		Query query = session.createQuery(hql2);
		
		List list = query.list();
		
		System.out.println(list);
  1. 条件
		String hql1 = " from  cn.itcast.domain.Customer where cust_id =? ";//完整写法
		String hql2 = " from  cn.itcast.domain.Customer where cust_id = :id ";//完整写法
		
		Query query = session.createQuery(hql2);
		
//		query.setParameter(0, 2l);
		query.setParameter("id", 2l);
		
		
		List list = query.list();
  1. 分页
		String hql1 = " from  cn.itcast.domain.Customer  ";//完整写法
		Query query = session.createQuery(hql1);
		//limit ?,?
		// (当前页数-1)*每页条数
		query.setFirstResult(2);
		query.setMaxResults(2);
		
		List list = query.list();
  1. 聚合
@Test
	//统计查询
	//count	计数
	//sum 	求和
	//avg	平均数
	//max
	//min
	public void fun5(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " select count(*) from  cn.itcast.domain.Customer  ";//完整写法
		String hql2 = " select sum(cust_id) from  cn.itcast.domain.Customer  ";//完整写法
		String hql3 = " select avg(cust_id) from  cn.itcast.domain.Customer  ";//完整写法
		String hql4 = " select max(cust_id) from  cn.itcast.domain.Customer  ";//完整写法
		String hql5 = " select min(cust_id) from  cn.itcast.domain.Customer  ";//完整写法
		
		Query query = session.createQuery(hql5);
		
		Number number  = (Number) query.uniqueResult();
		
		System.out.println(number);
		//----------------------------------------------------
		tx.commit();
		session.close();
		
	}
  1. 投影
	String hql1 = " select cust_name from  cn.itcast.domain.Customer  ";
		String hql2 = " select cust_name,cust_id from  cn.itcast.domain.Customer  ";
		String hql3 = " select new Customer(cust_id,cust_name) from  cn.itcast.domain.Customer  ";
		
		Query query = session.createQuery(hql3);
		
		List list = query.list();
  1. 多表查询

SQL
在这里插入图片描述HQL
在这里插入图片描述
HQL语法

  1. 内连接
@Test
	//HQL 内连接 => 将连接的两端对象分别返回.放到数组中.
	public void fun1(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql = " from Customer c inner join c.linkMens ";
		
		Query query = session.createQuery(hql);
		
		List<Object[]> list = query.list();
		
		for(Object[] arr : list){
			System.out.println(Arrays.toString(arr));
		}
		//----------------------------------------------------
		tx.commit();
		session.close();
		
	}
  1. 左外链接
	@Test
	//HQL 左外连接 => 将连接的两端对象分别返回.放到数组中.
	public void fun3(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql = " from Customer c left join c.linkMens ";
		
		Query query = session.createQuery(hql);
		
		List<Object[]> list = query.list();
		
		for(Object[] arr : list){
			System.out.println(Arrays.toString(arr));
		}
		//----------------------------------------------------
		tx.commit();
		session.close();
		
	}
	
  1. 右外连接
@Test
	//HQL 右外连接 => 将连接的两端对象分别返回.放到数组中.
	public void fun4(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql = " from Customer c right join c.linkMens ";
		
		Query query = session.createQuery(hql);
		
		List<Object[]> list = query.list();
		
		for(Object[] arr : list){
			System.out.println(Arrays.toString(arr));
		}
		//----------------------------------------------------
		tx.commit();
		session.close();
		
	}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值