Hibernate------------Criteria接口

//Criteria接口{更擅长执行动态查询}
		//步骤1.通过session创建Criteria,
			  //2.设定查询条件,通过Expression类或者Restrictions类创建查询条件
			//3.调用和Criteria的list()方法执行查询语句
	
	
		//作用:将查询条件封装成一个对象,Hibernate在执行时,会把Criteria指定的查询条件恢复成相应的SQL语句
	/*List<User1> users=session.createCriteria(User1.class)
			.add(Restrictions.eq("name", "4"))//调用add,添加查询条件
			.list();
	for(User1 u:users)
	{
		System.out.println(u.toString());
	}*/
	
	
	//1.add方法:
	//.add(Restrictions.eq("name", "4"))  添加查询条件
	
	
	//2.addOrder() 用来设置查询结果集的排序规则
		/*List<User1> users=session.createCriteria(User1.class)
				.add(Restrictions.eq("name", "4"))//条件  name=4
				.addOrder(Order.desc("id"))//id  倒叙排列
				.list();
		for (User1 user:users)
		{
			System.out.println(user.toString());
		}*/
	
		//3.createCriteria()方法
			//需要从多张表中联合查询时可使用。
		
		/*List users=session.createCriteria(User.class)//第一张表
				.add(Restrictions.eq("name", "1"))
				.createCriteria("address")//第二张表
				.add(Restrictions.eq("addressid",1))
				.list();
		for(int i=0;i<users.size();i++)
		{
			System.out.println(users.get(i).toString());
		}*/
		
		//4.list()方法,执行数据查询,并将擦汗寻结果返回
		
		
		//5.scroll()方法   返回ScrollableResults数据
		/*ScrollableResults users=session.createCriteria(User1.class)
				.add(Restrictions.eq("name", "3"))
				.scroll();
		while(users.next())
		{
			System.out.println(users.get(0));
		}*/
		
		
		//6.setFetchModel()方法,用于设置抓取策略
			//连接抓取策略
			//查询抓取策略
			//子查询抓取策略
			//批量抓取策略
	
	/*
		List users=session.createCriteria(User.class)
				.setFetchMode("permissions", FetchMode.JOIN)
				.add(Restrictions.eq("name", "1"))  //不仅查出User1实例,还查出关联的address实例
				.list();
		for(int i=0;i<users.size();i++)
		{
			System.out.println(users.get(i).toString());
		}*/
		
		
//		7.setMaxResults()方法   从数据库中取得的记录的最大行数
//		8.setFirstResult()方法   所获取的第一个记录的位置
		//分页查询功能
		/*List users =session.createCriteria(User1.class)
				.add(Restrictions.eq("name", "1"))
				.setMaxResults(2)//支取2条记录
				.setFirstResult(2)//从第三条记录开始取
				.list();
		for(int i=0;i<users.size();i++)
		{
			System.out.println(users.get(i).toString());
		}*/
		
		
		//9.setProjection()方法    主要完成一些聚合查询和分组查询
		/*List result=session.createCriteria(User1.class).setProjection(Projections.projectionList()
				.add(Projections.rowCount())  //统计记录行数
				.add(Projections.avg("id"))		//平均id
				.add(Projections.max("id"))		//最大id
				.add(Projections.min("id"))		//最小id
				.add(Projections.groupProperty("name"))   //按照名字分组查询{总共有14条数据,4中名字,所以分了四组}
				).list();
		
		for(int i=0;i<result.size();i++)
		{
			Object[] obj=(Object[]) result.get(i);
			System.out.print("统计记录行数=="+obj[0]);
			System.out.print("平均id=="+obj[1]);
			System.out.print("最大id=="+obj[2]);
			System.out.print("最小id=="+obj[3]);
			System.out.print("最小id=="+obj[4]);
			System.out.println();
		}*/
		
		
		//10  uniqueResult()方法,   使用该方法得到唯一的查询结果,使用该方法必须保证只有一个满足条件的结果
		User1 user=(User1) session.createCriteria(User1.class)
				.add(Restrictions.idEq(1))
				.uniqueResult();
		System.out.println(user.toString());
		
		
		
		
		
		
	

	tx.commit();//提交事务
	HibernateUntil.shutdown();//关闭session实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞飞翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值