hibernate基本的HQL查询demo

	@Test
	public void testQuery14(){
		//模糊查询
		String hql="from Person p where p.name like :mz";  
		Query query=session.createQuery(hql);
		
		//查找名字以字符‘2’结束的记录
		query.setString("mz", "%_2"); 
		
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery13(){
		String hql="from Person p where p.id in(:ids)";  
		Query query=session.createQuery(hql);
		
//		query.setParameterList("ids", new Object[]{3,6,9});
		
		List<Integer> list=new ArrayList<Integer>();
		list.add(2);
		list.add(5);
		list.add(8);
		query.setParameterList("ids", list);
		
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	
	@Test
	public void testQuery12(){
		//使用范围函数in
		String hql="from Person p where p.id in(1,4,7)";  
		Query query=session.createQuery(hql);
		
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	
	@Test
	public void testQuery11(){
		//hibernate 可以为占位符指定名称
		String hql="from Person p where p.name=:mz";  
		Query query=session.createQuery(hql);
		
		//与jdbc不同的是JDBC占位符从1开始,hibernate占位符的位置从0开始
		query.setString("mz", "lee4");
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	
	@Test
	public void testQuery10(){
		//hibernate 可以为占位符指定位置
		String hql="from Person p where p.name=?3 and p.id=?8";  
		Query query=session.createQuery(hql);
		
		//与jdbc不同的是JDBC占位符从1开始,hibernate占位符的位置从0开始
		query.setString("3", "lee3");
		query.setInteger("8", 4);
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery9(){
		String hql="from Person p where p.name=?";
		Query query=session.createQuery(hql);
		
		//与jdbc不同的是JDBC占位符从1开始,hibernate占位符的位置从0开始
		query.setString(0, "lee3");
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery8(){
//		String hql="from Person where id<5";
		String hql="from Person p where p.name='lee2'";
		Query query=session.createQuery(hql);
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery7(){
		String hql="from Person";
		Query query=session.createQuery(hql);
		
		query.setFirstResult(0);  //设置起始查询位置
		query.setMaxResults(10);  //设置返回结果的条数
		
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery6(){
		String hql="from Person";
		Query query=session.createQuery(hql);
		
		//当查询到的结果只有一条时,可以用uniqueResult()得到
		Person person=(Person) query.uniqueResult();
		System.out.println(person);
	}
	@Test
	public void testQuery5(){
		String hql="from Person";
		Query query=session.createQuery(hql);
		
		//获得查询结果中的第一条记录
		Person person=(Person) query.list().get(0);
			System.out.println(person);
	}
	
	@Test
	public void testQuery4(){
		//把查询结果封装到一个对象中,此对象需要提供相应的构造器
		String hql="select new Person(p.id,p.name) from Person p";
		Query query=session.createQuery(hql);
		
		List<Object[]> objs=query.list();
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}
	
	@Test
	public void testQuery3(){
		String hql="select p.id,p.name from Person p";
		Query query=session.createQuery(hql);
		
		//如果查询的是多个属性list集合接收的数据类型为Object[]
		List<Object[]> objs=query.list();
		for (Object[] obj : objs) {
			System.out.println(obj[0]+","+obj[1]);
		}
	}
	
	@Test
	public void testQuery2(){
		String hql="select p.name from Person p";
		Query query=session.createQuery(hql);
		
		//如果查询的是单个属性list集合接收的数据类型为此属性的数据类型
		List<String> names=query.list();
		for (String name : names) {
			System.out.println(name);
		}
	}
	
	@Test
	public void testQuery1(){
		String hql="from Person";
		Query query=session.createQuery(hql);
		List<Person> persons=query.list();
		for (Person person : persons) {
			System.out.println(person);
		}
	}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值