6-9 Hibernate查询

目录

1.基本的HQL查询

testQueryUser()

(1) 查询方法一

(2)  删除元素

(3) 查询方法二

(4)查询方法三定义一个迭代器的方法

2.HQL属性查询-基本的HQL查询,查询类的属性

(1)查询类的一个属性testQueryUserOneAttributes() 

查询类的两个及两个以上属性testQueryUserSeveralAttributes();采用对象数组的方式;

3、HQL属性查询-查询distinct去重

          testQueryUserOneAttributeByDistinct()

4、HQL实例化查询-基本的HQL查询,实例化查询

          public void testQueryUserByExample()

在user.java 中添加如下代码

 5、HQL统计函数查询-基本的HQL查询,统计查询

          testStatisticalQuery()

6.添加如下代码到User.java

7.HQL条件查询——where子句1

基本的HQL查询,条件查询1,查询名字“李洋洋”的User      testQueryUserByWhere1()

8. HQL条件查询——where子句2

基本的HQL查询,条件查询,查询年龄在20-30之间的User       testQueryUserByWhere2()

 9.HQL条件查询——where子句3

基本的HQL查询,条件查询之模糊查询,查询名字含有李的User          testQueryUserByWhere3()

10.子查询

基本的HQL查询,条件查询之嵌套子查询,查询年龄>平均年龄的所有用户               testEmbededSonQuery()

11.基本的HQL查询,条件查询之OrderBy,按照年龄降序,年龄相同,按照名字升序

               testQueryByOrderBy()

12.基本的HQL查询,条件查询之分组查询,统计男生女生各有多少

               testQueryByGroup()

13基本的HQL查询,条件查询之分组查询,having可以对每组进行条件限制              

               public void testQueryByGroupAndHaving()

14、参数绑定查询

基本的HQL查询,参数绑定查询           testQueryUserByParameter()

 15.分页查询

 基本的HQL查询,分页查询

                public void testQueryByPage()

16.分页查询

基本的HQL查询,分页查询,传入具体参数               testQueryByPage1()

 17.命名查询

在映射文件中定义命名查询语句(HQL)

(1)把如下代码复制到pojo->User.hbm.xml;与class同级(Ctrl+i调节格式)

 (2)基本的HQL查询,再User.hbm.xml定义命名查询标签                public void testQueryUserByQueryTag()

18.使用HQL更新和删除记录 

基本的HQL更新,把李洋洋更新成杨理理              testUpdate()

基本的HQL删除,把杨理理删除                testDelete()


 


一、Copy 下 helloHibernate3ManageObjects 粘贴更改名字为Hibernate4QueryByHQL(命名随意)

manageUser.java 中Testcase里面全部重写 ;

二、先在User.java里面添加 toString();

    public String toString(){
        return "User [id=" +id+",name="+name+",age="+age+",gender="+gender+",birthday="+birthday;
    }
     

 

6-9 Hibernate查询

manageUser.java 

 0、保存添加20个元素

6-9 Hibernate查询

​
//0、基本的HQL查询,保存
			public void testSaveUser(){
				Configuration cfg=null;
				SessionFactory sf=null;
				Session session=null;
				Transaction ts=null; 
			
				try {
					sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
					session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
				    ts=session.beginTransaction(); //开启事务
				
//				    User u2=session.get(User.class, 89);  //删除元素
//				    session.delete(u2);
				    
				    for(int i=0; i<20; i++){
				    	User u=new User();
				    	if(i%2==0) u.setGender("男");
				    	else u.setGender("女");
				    	u.setAge(i);
				    	u.setBirthday(Date.valueOf("2000-1-1"));
				    	u.setName("王"+i);
				    	session.save(u);
				    }
				   
				    ts.commit();
					
				} catch (Exception e) {  //捕获异常
					// TODO Auto-generated catch block
					e.printStackTrace();
					//异常:回滚
					if(ts!=null){
						ts.rollback();
						
					}
				}finally{
					sf.close();
				}
				
			}

​

 

1.HQL基本查询

基本的HQL查询 testQueryUser()

  (1) 查询方法一

6-9 Hibernate查询

(2)  删除元素

  User u2=session.get(User.class, 2);  //删除元素
   session.delete(u2);

6-9 Hibernate查询

(3) 查询方法二

6-9 Hibernate查询

(4)查询方法三定义一个迭代器的方法 

6-9 Hibernate查询

 

//基本的HQL查询
			public void testQueryUser(){
				Configuration cfg=null;
				SessionFactory sf=null;
				Session session=null;
				Transaction ts=null; 
			
				try {
					sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
					session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
				    ts=session.beginTransaction(); //开启事务
//					
//				    User u2=session.get(User.class, 2);  //删除元素
//				    session.delete(u2);
				    
				    Query query=session.createQuery("from User");
				    List<User> users=query.list();
				    //1、查询方法一
				    /*
				    for(int i=0;i<users.size();i++)
				    {
				    		User u=(User)users.get(i);
				    		System.out.println(u.toString());
				    }*/
				    
				    //2、查询方法二
				    /*for(User u:users){
				    	System.out.println(u.toString());
				    }*/
				    
				    //3、查询方法三定义一个迭代器的方法
				    Iterator iterator=users.iterator();
				    while(iterator.hasNext()){
				    	User u=(User)iterator.next();
				    	System.out.println(u.toString());
				    }
				    ts.commit();
					
				} catch (Exception e) {  //捕获异常
					// TODO Auto-generated catch block
					e.printStackTrace();
					//异常:回滚
					if(ts!=null){
						ts.rollback();
						
					}
				}finally{
					sf.close();
				}
				
			}
			
			

2.HQL属性查询

基本的HQL查询,查询类的属性

(1)查询类的一个属性testQueryUserOneAttributes() 

6-9 Hibernate查询

 

//1.基本的HQL查询,查询类的一个属性
	public void testQueryUserOneAttributes(){
		Configuration cfg=null;
		SessionFactory sf=null;
		Session session=null;
		Transaction ts=null; 
	
		try {
			sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
			session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
		    ts=session.beginTransaction(); //开启事务
//			
//		    User u2=session.get(User.class, 2);  //删除元素
//		    session.delete(u2);
		    
		    Query query=session.createQuery("select u.name from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
		    List names=query.list();
		    //1、查询方法一

		    for(int i=0;i<names.size();i++)
		    {
		    		String  name=(String)names.get(i);
		    		System.out.println(name);
		    }
		   
		    
		    ts.commit();
			
		} catch (Exception e) {  //捕获异常
			// TODO Auto-generated catch block
			e.printStackTrace();
			//异常:回滚
			if(ts!=null){
				ts.rollback();
				
			}
		}finally{
			sf.close();
		}
		
	}
	
	

 (2)查询类的两个及两个以上属性testQueryUserSeveralAttributes();采用对象数组的方式;

6-9 Hibernate查询

//2.基本的HQL查询,查询类的两个及两个以上属性
		public void testQueryUserSeveralAttributes(){
			Configuration cfg=null;
			SessionFactory sf=null;
			Session session=null;
			Transaction ts=null; 
		
			try {
				sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
				session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
			    ts=session.beginTransaction(); //开启事务
//				
//			    User u2=session.get(User.class, 2);  //删除元素
//			    session.delete(u2);
			    
			    Query query=session.createQuery("select u.name,u.age from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
			    List attributes=query.list();
			    //1、查询方法一
			    for(int i=0;i<attributes.size();i++)
			    {
			    		Object objs[]=(Object[])attributes.get(i);
			    		System.out.println(objs[0]+"的年龄"+objs[1]);
			    }
			   
			    
			    ts.commit();
				
			} catch (Exception e) {  //捕获异常
				// TODO Auto-generated catch block
				e.printStackTrace();
				//异常:回滚
				if(ts!=null){
					ts.rollback();
					
				}
			}finally{
				sf.close();
			}
			
		}
		
	

 3、HQL属性查询

查询distinct去重

testQueryUserOneAttributeByDistinct()

6-9 Hibernate查询

//3.基本的HQL查询,查询distinct去重
		public void testQueryUserOneAttributeByDistinct(){
			Configuration cfg=null;
			SessionFactory sf=null;
			Session session=null;
			Transaction ts=null; 
		
			try {
				sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
				session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
			    ts=session.beginTransaction(); //开启事务
			   
			    Query query=session.createQuery("select distinct u.name from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
			    List names=query.list();
			    //1、查询方法一

			    for(int i=0;i<names.size();i++)
			    {
			    		String  name=(String)names.get(i);
			    		System.out.println(name);
			    }
			    ts.commit();
				
			} catch (Exception e) {  //捕获异常
				// TODO Auto-generated catch block
				e.printStackTrace();
				//异常:回滚
				if(ts!=null){
					ts.rollback();
					
				}
			}finally{
				sf.close();
			}
		}

 4、HQL实例化查询

基本的HQL查询,实例化查询

public void testQueryUserByExample()

在user.java 中添加如下代码

 public User(String username,int age){
        name=username;
        this.age=age;
    }

 姓名和年龄的构造方法

6-9 Hibernate查询

 testQueryUserByExample()

6-9 Hibernate查询

 

//5.基本的HQL查询,实例化查询
				public void testQueryUserByExample(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
					    Query query=session.createQuery("select new User(u.name,u.age) from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
					    List<User> users=query.list();
					    //1、查询方法一
					    for(int i=0;i<users.size();i++)
					    {
					    		User u=(User)users.get(i);
					    		System.out.println(u.getName()+"的年龄"+u.getAge());		
					    		if(u.getAge()==20){
					    			session.saveOrUpdate(u);
					    		}
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
		
	

 5、HQL统计函数查询

基本的HQL查询,统计查询

 testStatisticalQuery()

6-9 Hibernate查询

 

//6.基本的HQL查询,统计查询
				public void testStatisticalQuery(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //统计有多少个对象(即有多少条数据记录)
					    Query query=session.createQuery("select count(*) from User u"); 
					    Number result1=(Number)query.uniqueResult();
					    System.out.println(result1);
					    
					  //统计平均年龄
					    query=session.createQuery("select avg(age) from User u"); 
					    Number result2=(Number)query.uniqueResult();
					    System.out.println(result2);
					    
					  //统计最大年龄
					    query=session.createQuery("select max(age) from User u"); 
					    Number result3=(Number)query.uniqueResult();
					    System.out.println(result3);
					  
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				

 6.添加如下代码到User.java

public User() {
        // TODO Auto-generated constructor stub
        name=getName();
        this.age=age;
        gender=getGender();
        this.id=id;
        birthday=getBirthday();
    }

 

6-9 Hibernate查询

7、HQL条件查询——where子句1

基本的HQL查询,条件查询1,查询名字“李洋洋”的User
      testQueryUserByWhere1()

6-9 Hibernate查询

/7.基本的HQL查询,条件查询1,查询名字“李洋洋”的User
				public void testQueryUserByWhere1(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
					    Query query=session.createQuery("from User u where u.name='李洋洋'"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				

8. HQL条件查询——where子句2

基本的HQL查询,条件查询,查询年龄在20-30之间的User
       testQueryUserByWhere2()

6-9 Hibernate查询

 

//8.基本的HQL查询,条件查询,查询年龄在20-30之间的User
				public void testQueryUserByWhere2(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.age >= 20 and u.age <= 30"); 
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}

 9.HQL条件查询——where子句3

基本的HQL查询,条件查询之模糊查询,查询名字含有李的User
          testQueryUserByWhere3()

6-9 Hibernate查询

//9.基本的HQL查询,条件查询之模糊查询,查询名字含有李的User
				public void testQueryUserByWhere3(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.name like '%李%' and u.age>15"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				

 10.子查询

基本的HQL查询,条件查询之嵌套子查询,查询年龄>平均年龄的所有用户
              testEmbededSonQuery()

6-9 Hibernate查询

//10.基本的HQL查询,条件查询之嵌套子查询,查询年龄>平均年龄的所有用户
				public void testEmbededSonQuery(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.age>(select avg(age) from User)"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
				}
				

11.基本的HQL查询,条件查询之OrderBy,按照年龄降序,年龄相同,按照名字升序
               testQueryByOrderBy()

6-9 Hibernate查询

//11.基本的HQL查询,条件查询之OrderBy,按照年龄降序,年龄相同,按照名字升序
				public void testQueryByOrderBy(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u order by u.age desc, u.name"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				

 

12、基本的HQL查询,条件查询之分组查询,统计男生女生各有多少
               testQueryByGroup()

6-9 Hibernate查询

//12.基本的HQL查询,条件查询之分组查询,统计男生女生各有多少
				public void testQueryByGroup(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //此时avg统计查询是针对分组之后的每一组进行的
					    Query query=session.createQuery("select u.gender, avg(u.age) from User u group by u.gender"); //可以多个条件
					    //此时list是object类型 对象数组
					    List<Objects[]> list=query.list();
					    for(int i=0; i<list.size(); i++){
					    	Object[] objs=(Object[])list.get(i);
					    	System.out.println(objs[0]+"的平均年龄为"+objs[1]);
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
		
	
				

 

13、基本的HQL查询,条件查询之分组查询,having可以对每组进行条件限制
                public void testQueryByGroupAndHaving()

6-9 Hibernate查询

//13.基本的HQL查询,条件查询之分组查询,having可以对每组进行条件限制
				public void testQueryByGroupAndHaving(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //此时avg统计查询是针对分组之后的每一组进行的
					    Query query=session.createQuery("select u.gender, avg(u.age) from User u group by u.gender having avg(u.age)<20"); //可以多个条件
					    //此时list是object类型 对象数组
					    List<Objects[]> list=query.list();
					    for(int i=0; i<list.size(); i++){
					    	Object[] objs=(Object[])list.get(i);
					    	System.out.println(objs[0]+"的平均年龄为"+objs[1]);
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
		

 

 14、参数绑定查询

基本的HQL查询,参数绑定查询
           testQueryUserByParameter()

6-9 Hibernate查询

 

setString()方法不能使用,采用setParameter()方法

6-9 Hibernate查询

 

//14.基本的HQL查询,参数绑定查询
				public void testQueryUserByParameter(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					    Query query=session.createQuery("from User u where u.name=?"); 
//					    query.setString(0,"李洋洋");
					    query.setParameter(0, "李洋洋");
					    
					    List<User> users=query.list();
					    //1、查询方法一
					   
					    for(int i=0;i<users.size();i++)
					    {
					    		User u=(User)users.get(i);
					    		System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	

15.分页查询

 基本的HQL查询,分页查询

                public void testQueryByPage()

查询前五个对象

6-9 Hibernate查询


				//15.基本的HQL查询,分页查询
				public void testQueryByPage(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					    Query query=session.createQuery("from User u "); 
					    query.setFirstResult(0);
					    query.setMaxResults(5);
					    
					    List<User> users=query.getResultList();
					    for(User u:users)
					    {
					    		System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	

 

 16.分页查询

基本的HQL查询,分页查询,传入具体参数
               testQueryByPage1()

6-9 Hibernate查询

 

//16.基本的HQL查询,分页查询,传入具体参数
				public void testQueryByPage1(){
					QueryByPage(3);
				}
				public void QueryByPage(int pageSize){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					    Query query=session.createQuery("from User u "); 
					  
					    List<User> users=query.getResultList();
					    int userCount=users.size();
					    int pageCount=0;
					    pageCount=userCount/pageSize;
					    if(userCount % pageSize!=0){
					    	pageCount++;
					    }
					    for(int i=0; i<pageCount; i++){
					    	System.out.println("第"+i+"页:");
					    	System.out.println("---------------------------------");
					    	query.setFirstResult(i*pageSize);
					    	query.setMaxResults(pageSize);
					    	  List<User> user1s=query.getResultList();
					    	  for(User u:user1s)
							    {
							    		System.out.println(u.toString());
							    }
					    }
					    
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	

         不用总去读取数据库,需要哪页再查询
 

6-9 Hibernate查询

 

//16.基本的HQL查询,分页查询,传入具体参数
				public void testQueryByPage1(){
					QueryByPage(3);
				}
				public void QueryByPage(int pageSize){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					     
					    //不用总去读取数据库,需要哪页再查询
					    Query query=session.createQuery("select count(*) from User u "); //统计查询
					    Number cnts=(Number)query.uniqueResult();
					    
					    int userCount=cnts.intValue();
					    int pageCount=0;
					    pageCount=userCount/pageSize;
					    
					    if(userCount % pageSize!=0){
					    	pageCount++;
					    }
					    Query query1=session.createQuery("from User u "); //普通

					    for(int i=0; i<pageCount; i++){
					    	System.out.println("第"+i+"页:");
					    	System.out.println("---------------------------------");
					    	query1.setFirstResult(i*pageSize);
					    	query1.setMaxResults(pageSize);
					    	  List<User> user1s=query1.list();
					    	  for(User u:user1s)
							    {
							    		System.out.println(u.toString());
							    }
					    }
					    
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	

 17.命名查询

在映射文件中定义命名查询语句(HQL)

(1)把如下代码复制到pojo->User.hbm.xml;与class同级(Ctrl+i调节格式)

<query name="findUserByName">         

<![CDATA[           

 from     User u where u.username=:name         

]]>          

</query>

 

User.hbm.xml 

<?xml version="1.0"?>
<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <class name="cn.hrbust.pojo.User" table="T_USER" select-before-update="true" dynamic-update="true">
        <id name="id"  column="id">
            <generator class="identity"/>          
        </id>
        <property name="name" column="username"/>
        <property name="gender" column="sex"/>
        <property name="age" /> 
        <property name="birthday" column="borndate"/>
     
    </class>
    
	<query name="findUserByName">
		<![CDATA[
			from 	User u where u.name=:username
		]]>
	</query>
    
    

</hibernate-mapping>

 

 (2)基本的HQL查询,再User.hbm.xml定义命名查询标签
                public void testQueryUserByQueryTag()

6-9 Hibernate查询

 

//17.基本的HQL查询,再User.hbm.xml定义命名查询标签
				public void testQueryUserByQueryTag(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
				
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					
					    Query query=session.getNamedQuery("findUserByName");
					    query.setParameter("username", "李洋洋");
					    List<User> users=query.list();
					    
					    //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
					
				}
				

18.使用HQL更新和删除记录 

基本的HQL更新,把李洋洋更新成杨理理
              testUpdate()

6-9 Hibernate查询

查询

6-9 Hibernate查询

 

//18.基本的HQL更新,把李洋洋更新成杨理理
				public void testUpdate(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
				
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					
					    Query query=session.createQuery("update User u set u.name='杨理理' where u.name='李洋洋'");   
					    query.executeUpdate();
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
					
				}

基本的HQL删除,把杨理理删除
                testDelete()

6-9 Hibernate查询

 查询

6-9 Hibernate查询

//18.基本的HQL删除,把杨理理删除
				public void testDelete(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
				
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					
					    Query query=session.createQuery("delete User u where u.name='杨理理'");   
					    query.executeUpdate();
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
					
				}

 manageuser.java

package cn.hrbust.dao;
//1814010809
import java.sql.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;

import cn.hrbust.pojo.User;
import junit.framework.TestCase;

public class manageUser extends TestCase{	
	//2.基本的HQL查询,查询类的一个属性
	public void testQueryUserOneAttributes(){
		Configuration cfg=null;
		SessionFactory sf=null;
		Session session=null;
		Transaction ts=null; 
	
		try {
			sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
			session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
		    ts=session.beginTransaction(); //开启事务
//			
//		    User u2=session.get(User.class, 2);  //删除元素
//		    session.delete(u2);
		    
		    Query query=session.createQuery("select u.name from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
		    List names=query.list();
		    //1、查询方法一

		    for(int i=0;i<names.size();i++)
		    {
		    		String  name=(String)names.get(i);
		    		System.out.println(name);
		    }
		   
		    
		    ts.commit();
			
		} catch (Exception e) {  //捕获异常
			// TODO Auto-generated catch block
			e.printStackTrace();
			//异常:回滚
			if(ts!=null){
				ts.rollback();
				
			}
		}finally{
			sf.close();
		}
		
	}
	
	//3.基本的HQL查询,查询类的两个及两个以上属性
		public void testQueryUserSeveralAttributes(){
			Configuration cfg=null;
			SessionFactory sf=null;
			Session session=null;
			Transaction ts=null; 
		
			try {
				sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
				session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
			    ts=session.beginTransaction(); //开启事务
//				
//			    User u2=session.get(User.class, 2);  //删除元素
//			    session.delete(u2);
			    
			    Query query=session.createQuery("select u.name,u.age from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
			    List<Object[]> attributes=query.list();
//			    List attributes=query.list(); //后面81强制转换,没有直接指定泛型的类型
			    //1、查询方法一
			    for(int i=0;i<attributes.size();i++)
			    {
			    		Object objs[]=(Object[])attributes.get(i);
			    		System.out.println(objs[0]+"的年龄"+objs[1]);
			    }
			   
			    
			    ts.commit();
				
			} catch (Exception e) {  //捕获异常
				// TODO Auto-generated catch block
				e.printStackTrace();
				//异常:回滚
				if(ts!=null){
					ts.rollback();
					
				}
			}finally{
				sf.close();
			}
			
		}
		
		//4.基本的HQL查询,查询distinct去重
		public void testQueryUserOneAttributeByDistinct(){
			Configuration cfg=null;
			SessionFactory sf=null;
			Session session=null;
			Transaction ts=null; 
		
			try {
				sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
				session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
			    ts=session.beginTransaction(); //开启事务
			   
			    Query query=session.createQuery("select distinct u.name from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
			    List names=query.list();
			    //1、查询方法一

			    for(int i=0;i<names.size();i++)
			    {
			    		String  name=(String)names.get(i);
			    		System.out.println(name);
			    }
			    ts.commit();
				
			} catch (Exception e) {  //捕获异常
				// TODO Auto-generated catch block
				e.printStackTrace();
				//异常:回滚
				if(ts!=null){
					ts.rollback();
					
				}
			}finally{
				sf.close();
			}
		}
		
		//5.基本的HQL查询,实例化查询
				public void testQueryUserByExample(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
					    Query query=session.createQuery("select new User(u.name,u.age) from User u"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
					    List<User> users=query.list();
					    //1、查询方法一
					    for(int i=0;i<users.size();i++)
					    {
					    		User u=(User)users.get(i);
					    		System.out.println(u.getName()+"的年龄"+u.getAge());		
					    		if(u.getAge()==20){
					    			session.saveOrUpdate(u);
					    		}
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				//6.基本的HQL查询,统计查询
				public void testStatisticalQuery(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //统计有多少个对象(即有多少条数据记录)
					    Query query=session.createQuery("select count(*) from User u"); 
					    Number result1=(Number)query.uniqueResult();
					    System.out.println(result1);
					    
					  //统计平均年龄
					    query=session.createQuery("select avg(age) from User u"); 
					    Number result2=(Number)query.uniqueResult();
					    System.out.println(result2);
					    
					  //统计最大年龄
					    query=session.createQuery("select max(age) from User u"); 
					    Number result3=(Number)query.uniqueResult();
					    System.out.println(result3);
					  
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				//7.基本的HQL查询,条件查询1,查询名字“李洋洋”的User
				public void testQueryUserByWhere1(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
					    Query query=session.createQuery("from User u where u.name='李洋洋'"); //这里取属性名称,不再是数据库里面的表,不写字段的名称了
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				//8.基本的HQL查询,条件查询,查询年龄在20-30之间的User
				public void testQueryUserByWhere2(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.age >= 20 and u.age <= 30"); 
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				
				//9.基本的HQL查询,条件查询之模糊查询,查询名字含有李的User
				public void testQueryUserByWhere3(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.name like '%李%' and u.age>15"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				
				//10.基本的HQL查询,条件查询之嵌套子查询,查询年龄>平均年龄的所有用户
				public void testEmbededSonQuery(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u where u.age>(select avg(age) from User)"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
				}
				
				
				//11.基本的HQL查询,条件查询之OrderBy,按照年龄降序,年龄相同,按照名字升序
				public void testQueryByOrderBy(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   
//					    Query query=session.createQuery("from User u where u.age between 20 and 30"); 
					    Query query=session.createQuery("from User u order by u.age desc, u.name"); //可以多个条件
					    List<User> users=query.list();
					  //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
				
				
				//12.基本的HQL查询,条件查询之分组查询,统计男生女生各有多少
				public void testQueryByGroup(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //此时avg统计查询是针对分组之后的每一组进行的
					    Query query=session.createQuery("select u.gender, avg(u.age) from User u group by u.gender"); //可以多个条件
					    //此时list是object类型 对象数组
					    List<Objects[]> list=query.list();
					    for(int i=0; i<list.size(); i++){
					    	Object[] objs=(Object[])list.get(i);
					    	System.out.println(objs[0]+"的平均年龄为"+objs[1]);
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
		
				
				//13.基本的HQL查询,条件查询之分组查询,having可以对每组进行条件限制
				public void testQueryByGroupAndHaving(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					   //此时avg统计查询是针对分组之后的每一组进行的
					    Query query=session.createQuery("select u.gender, avg(u.age) from User u group by u.gender having avg(u.age)<20"); //可以多个条件
					    //此时list是object类型 对象数组
					    List<Objects[]> list=query.list();
					    for(int i=0; i<list.size(); i++){
					    	Object[] objs=(Object[])list.get(i);
					    	System.out.println(objs[0]+"的平均年龄为"+objs[1]);
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
		
				//14.基本的HQL查询,参数绑定查询
				public void testQueryUserByParameter(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					    Query query=session.createQuery("from User u where u.name=?"); 
//					    query.setString(0,"李洋洋");
					    query.setParameter(0, "李洋洋");
					    
					    List<User> users=query.list();
					    //1、查询方法一
					   
					    for(int i=0;i<users.size();i++)
					    {
					    		User u=(User)users.get(i);
					    		System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	
				//15.基本的HQL查询,分页查询
				public void testQueryByPage(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					    Query query=session.createQuery("from User u "); 
					    query.setFirstResult(0);
					    query.setMaxResults(5);
					    
					    List<User> users=query.getResultList();
					    for(User u:users)
					    {
					    		System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}

				//16.基本的HQL查询,分页查询,传入具体参数
				public void testQueryByPage1(){
					QueryByPage(3);
				}
				public void QueryByPage(int pageSize){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
					
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
		
					     
					    //不用总去读取数据库,需要哪页再查询
					    Query query=session.createQuery("select count(*) from User u "); //统计查询
					    Number cnts=(Number)query.uniqueResult();
					    
					    int userCount=cnts.intValue();
					    int pageCount=0;
					    pageCount=userCount/pageSize;
					    
					    if(userCount % pageSize!=0){
					    	pageCount++;
					    }
					    Query query1=session.createQuery("from User u "); //普通

					    for(int i=0; i<pageCount; i++){
					    	System.out.println("第"+i+"页:");
					    	System.out.println("---------------------------------");
					    	query1.setFirstResult(i*pageSize);
					    	query1.setMaxResults(pageSize);
					    	  List<User> user1s=query1.list();
					    	  for(User u:user1s)
							    {
							    		System.out.println(u.toString());
							    }
					    }
					    
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
						sf.close();
					}
				}
	
				
				//17.基本的HQL查询,再User.hbm.xml定义命名查询标签
				public void testQueryUserByQueryTag(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
				
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					
					    Query query=session.getNamedQuery("findUserByName");
					    query.setParameter("username", "李洋洋");
					    List<User> users=query.list();
					    
					    //3、查询方法三定义一个迭代器的方法
					    Iterator iterator=users.iterator();
					    while(iterator.hasNext()){
					    	User u=(User)iterator.next();
					    	System.out.println(u.toString());
					    }
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
					
				}
				
				//18.基本的HQL删除,把杨理理删除
				public void testDelete(){
					Configuration cfg=null;
					SessionFactory sf=null;
					Session session=null;
					Transaction ts=null; 
				
					try {
						sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
						session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
					    ts=session.beginTransaction(); //开启事务
					
					    Query query=session.createQuery("delete User u where u.name='杨理理'");   
					    query.executeUpdate();
					    ts.commit();
						
					} catch (Exception e) {  //捕获异常
						// TODO Auto-generated catch block
						e.printStackTrace();
						//异常:回滚
						if(ts!=null){
							ts.rollback();
							
						}
					}finally{
//						sf.close();
					}
					
				}
				



			//1基本的HQL查询,查询所有属性
			public void testQueryUser(){
				Configuration cfg=null;
				SessionFactory sf=null;
				Session session=null;
				Transaction ts=null; 
			
				try {
					sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
					session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
				    ts=session.beginTransaction(); //开启事务
//					
//				    User u2=session.get(User.class, 82);  //删除元素
//				    session.delete(u2);
				    
				    Query query=session.createQuery("from User");
				    List<User> users=query.list();
				    //1、查询方法一
				   
				    for(int i=0;i<users.size();i++)
				    {
				    		User u=(User)users.get(i);
				    		System.out.println(u.toString());
				    }
				    
				    //2、查询方法二
				    /*for(User u:users){
				    	System.out.println(u.toString());
				    }*/
				    
				    //3、查询方法三定义一个迭代器的方法
//				    Iterator iterator=users.iterator();
//				    while(iterator.hasNext()){
//				    	User u=(User)iterator.next();
//				    	System.out.println(u.toString());
//				    }
				    ts.commit();
					
				} catch (Exception e) {  //捕获异常
					// TODO Auto-generated catch block
					e.printStackTrace();
					//异常:回滚
					if(ts!=null){
						ts.rollback();
						
					}
				}finally{
//					sf.close();
				}
				
			}
			
			//0、基本的HQL查询
			public void testSaveUser(){
				Configuration cfg=null;
				SessionFactory sf=null;
				Session session=null;
				Transaction ts=null; 
			
				try {
					sf=HibernateUtil.getSessionFactory(); //sessionfactory单态模式		
					session=sf.getCurrentSession(); //保证每个读写线程有唯一的session实例
				    ts=session.beginTransaction(); //开启事务
				
//				    User u2=session.get(User.class, 89);  //删除元素
//				    session.delete(u2);
				    
				    for(int i=0; i<20; i++){
				    	User u=new User();
				    	if(i%2==0) u.setGender("男");
				    	else u.setGender("女");
				    	u.setAge(i);
				    	u.setBirthday(Date.valueOf("2000-1-1"));
				    	u.setName("王"+i);
				    	session.save(u);
				    }
				   
				    ts.commit();
					
				} catch (Exception e) {  //捕获异常
					// TODO Auto-generated catch block
					e.printStackTrace();
					//异常:回滚
					if(ts!=null){
						ts.rollback();
						
					}
				}finally{
					sf.close();
				}
				
			}
				

}

至此,HQL相关操作,全部完成。

上一篇:eclipse学习(第三章:ssh中的Hibernate)——2.Hibernate的一些配置(hibernate.cfg.xml里面的属性)


下一篇:ssh框架下hibernate使用find进行模糊查询