使用HQL,Criteria方式进行查询

HQL和Criteria都是一种面向对象的数据库查询,使用HQL和Criteria更加符合面向对象的设计思想。

 

这里先举出两个小实例,分别使用HQL和Criteria进行查询。

 

HQL(Hibernate Query Language)
面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的;HQL查询的是对象而不是表,并且支持多态;HQL主要通过Query操作
public static void query(String name){
		Session session=null;
		try{
			session=HibernateUtil.getSession();
			String hql="from User as user where user.name=?";
			Query query=session.createQuery(hql);
			query.setString(0,name);
			List<User> list=query.list();//这里的list 方法和JDBC中的executeQuery()方法相同
			for(User user:list){
				System.out.println(user.getId());
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			HibernateUtil.sessionClose(session);
		}
	}

 

Query中方法分析:

 

方法名

描述

list()

与JDBC中的executeQuery()方法的作用相同,返回一个List的结果集

uniqueResult()

当确定查找的结果只有一个的时候,使用该种方法更好。返回的是一个对象。

 

使用Criteria方式进行查询。

Criteria是一种更加面向对象的查询,通过对对象的操作来限制条件,而这些限制条件的操作都通过Restrictions类来完成。

 

/**
	 * 根据用户姓名使用Criteria返回一条记录
	 * @param name
	 * @return
	 */
	public static User cri(String name){
		Session session=null;
		User u=null;
		try {
			session=HibernateUtil.getSession();
			//Criteria是一种面向对象的查询
			Criteria c=session.createCriteria(User.class);
			//User类中name属性必须等于传递进来的参数
			c.add(Restrictions.eq("name",name));
			//c.add(Restrictions.lt("birthday",new Date()));
			u=(User)c.uniqueResult();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
		return u;
	}

 

 

<!--EndFragment--><!--EndFragment--><!--EndFragment-->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值