Hibernate练习

  1 package com.hanqi.dao;
  2 import org.hibernate.Transaction;
  3 import org.hibernate.service.*;
  4 import java.util.List;
  5 import org.hibernate.Query;
  6 import org.hibernate.Session;
  7 import org.hibernate.SessionFactory;
  8 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  9 import org.hibernate.cfg.Configuration;
 10 import org.junit.After;
 11 import org.junit.Before;
 12 import org.junit.Test;
 13 //JUnit测试用例
 14 public class testUser {
 15         SessionFactory sf=null;
 16         Session  se=null;
 17         Transaction tr=null;
 18     //在test方法执行之前执行
 19     @Before
 20     public void init()
 21     {
 22         System.out.println("初始化的方法");
 23         
 24                 //测试Hibernate
 25     
 26                 //1.创建SessionFactory
 27                 //(1)得到配置
 28                 Configuration cfg=new Configuration().configure();
 29                 //(2)注册服务
 30                 ServiceRegistry sr=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
 31                 //(3)得到SessionFactory
 32                 sf=cfg.buildSessionFactory(sr);
 33                 //2.创建Session打开数据库连接
 34                 se=sf.openSession();
 35                 //3.创建Transaction,开始事务
 36                  tr=se.beginTransaction();
 37                 //之前是固定的写法            
 38     }
 39     
 40     
 41     @Test
 42     public void test0()
 43     {
 44         //插入数据
 45         User u=new User("测试用户",20,"123456");  
 46         //保存数据
 47         se.save(u);
 48         //获取数据
 49         User u1=(User)se.get(User.class,2);
 50         System.out.println(u1);
 51         //修改数据
 52         u1.setAge(30);
 53         u1.setUserName("新的名称");
 54         //删除数据
 55           se.delete(u1);
 56     }
 57     
 58     @Test
 59     public void test1()
 60     {
 61         //HQL查询
 62         //1.写HQL语句
 63         String hql="from User n where n.age>? and n.password=? order by n.userID Desc";
 64         hql="from User n where n.age>:age and n.password=:pw";
 65         //2.创建query
 66         Query q=se.createQuery(hql);
 67         //方法链编程,补充问号的空位
 68         List<User> lu=q.setInteger(0, 30).setString(1, "12456").list();
 69         //3.遍历结果
 70         for(User u:lu)
 71         {
 72             System.out.println(u);
 73         }
 74     }
 75 @Test
 76     public void testTeacher()
 77     {
 78         String Hql="select t.tsex,count(t.tsex) from Teacher t group by t.tsex";
 79         //使用Object[]来装载数据
 80         List<Object[]> ls=se.createQuery(Hql).list();
 81         for(Object[] ary:ls)    
 82         {
 83             for(Object obj:ary)
 84             {
 85                 System.out.print(" "+obj+";");
 86             }
 87             System.out.println();
 88         }
 89     }
 90     
 91     @Test
 92     public void testQuery1()
 93     {
 94         //可以在HQL使用new构造方法 返回持久化类的实例
 95         String Hql="select new Teacher(n.tno,n.tname) from Teacher n";
 96         List<Teacher> lt=se.createQuery(Hql).list();
 97         for(Teacher t:lt)
 98         {
 99             System.out.println(t);
100         }
101     }
102     
103     @Test
104     public void testQuery2()
105     {
106         String Hql="From Course n where n.tno in"
107                 +"(select t.tno from Teacher t where t.depart='计算机系')";
108         List<Course> lt=se.createQuery(Hql).list();
109         for(Course t:lt)
110         {
111             System.out.println(t);
112         }
113     }
114     
115     @Test
116     public void testQuery3()
117     {
118         String Hql="select c.cno,c.cname,t.tname from Course c,Teacher t where c.tno=t.tno";
119         List<Object[]> ls=se.createQuery(Hql).list();
120         for(Object[] ary:ls)    
121         {
122             for(Object obj:ary)
123             {
124                 System.out.print(" "+obj+";");
125             }
126             System.out.println();
127         }
128     }
129     
130     @Test
131     public void testGet1()
132     {
133         //得到单个实例
134         Course c=(Course)se.get(Course.class, "3-126");
135         //有框架自动获取相关数据
136         Teacher t=(Teacher)se.get(Teacher.class, "804");
137         System.out.println(c);
138         //添加新课程
139         Course c1=new Course("3-126","数据库",t);
140         se.save(c1);
141         System.out.println(t);
142     }
143     
144     @Test
145     public void testGet2()
146     {
147         Teacher t=(Teacher)se.get(Teacher.class, "825");
148         System.out.println(t);
149         se.delete(t);
150     }
151     
152     //在test方法执行之后执行
153     @After
154     public void destory()
155     {
156         //6.提交事务
157         tr.commit();
158         //7.关闭
159         se.close();
160         sf.close();
161     }
162 }

 

posted @ 2016-07-23 09:17  明天会更好!!!!  阅读(177)  评论(0)    收藏  举报