zoukankan      html  css  js  c++  java
  • Hibernate 具体代码

      1 package com.shuyinghengxie.doudou;
      2 
      3 import static org.junit.Assert.*;
      4 
      5 import java.util.Date;
      6 import java.util.List;
      7 
      8 
      9 import org.hibernate.Query;
     10 import org.hibernate.Session;
     11 import org.hibernate.SessionFactory;
     12 import org.hibernate.Transaction;
     13 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
     14 import org.hibernate.cfg.Configuration;
     15 import org.hibernate.mapping.Map;
     16 import org.hibernate.service.ServiceRegistry;
     17 import org.junit.After;
     18 import org.junit.Before;
     19 import org.junit.Test;
     20 
     21 import com.shungying.hengxie.TUser;
     22 import com.shungying.hengxie.USer;
     23 
     24 public class TEST01 {
     25 
     26     private SessionFactory sf = null ;
     27     private Session se = null ;
     28     private Transaction ts = null ;
     29     //在测试用例方法被执行之前自动执行的方法
     30     //一般用来初始化对象
     31     @Before
     32     public void init ()
     33     {
     34                 //1获取配置文件 
     35                 Configuration cfg = new Configuration().configure() ;
     36                 
     37                 //2注册配置  
     38                 ServiceRegistry sr = new StandardServiceRegistryBuilder().
     39                                                     applySettings(cfg.getProperties()).build();
     40                 
     41                 //3获取SessionFactory
     42                 sf = cfg.buildSessionFactory(sr) ;
     43 
     44                 //System.out.println(sf);
     45                 
     46                 //4产生Session
     47                 se =sf.openSession() ;
     48                 
     49                 //5启动事务
     50                 ts = se.beginTransaction() ;
     51     }
     52     
     53     //后置对象
     54     //用来释放资源
     55     @After
     56     public void destroy()
     57     {
     58                 //7提交数据
     59                 ts.commit();
     60                 
     61                 //8释放资源
     62                 se.close();
     63                 sf.close(); //关闭,释放资源
     64     }
     65     
     66     
     67     //测试 Hibernate连接
     68     @Test
     69     public void test() 
     70     {
     71     
     72         
     73         //6操作数据库
     74         //添加数据
     75         USer u1 = new USer() ;
     76         
     77         u1.setBrithday(new Date());
     78         u1.setMoney(2000);
     79         u1.setName("tom");
     80         u1.setPassword("123123");
     81         
     82         //通过save方法将对象从临时状态转变成持久化状态
     83         se.save(u1) ;  //保存数据,并未存进数据库,只是获取自增序列的id赋值
     84         System.out.println(u1); 
     85         
     86     }
     87 
     88     
     89     //查询数据
     90     @Test
     91     public void test01()
     92     {
     93         try{
     94         //提供两个参数
     95         //1需要返回哪一个持久化类的实例
     96         //2实例的标识(数据主键值)
     97         USer us = (USer)se.get(USer.class, 4) ;//返回Object类型
     98         
     99         //修改姓名
    100         us.setName("前面有个大傻逼");
    101         
    102         System.out.println(us);
    103         }catch(Exception e)
    104         {
    105             System.out.println("id不存在");
    106             
    107             e.getMessage() ;
    108         }
    109         //删除
    110         //se.delete(us);
    111     }
    112     
    113     
    114     @Test
    115     public void test02()
    116     {
    117         USer us = (USer)se.get(USer.class, 15) ;
    118         
    119         System.out.println(us);
    120     }
    121     
    122     /*
    123      * get  立即加载数据
    124      *             查询数据不存在返回null   ,不报异常
    125      * load  延时加载数据,使用时在加载
    126      *                 查询数据不存在会报异常
    127      */
    128     @Test
    129     public void test03()
    130     {
    131         USer us = (USer)se.load(USer.class, 6) ;
    132         
    133         
    134         
    135         System.out.println(us);
    136     }
    137     
    138     //测试游离状态
    139     @Test
    140     public void test04()
    141     {
    142         //得到持久化状态的对象
    143         USer us = (USer)se.get(USer.class, 5) ;
    144         
    145         System.out.println(us);
    146         
    147         se.close() ;//关闭Session
    148         
    149         us.setName("前面两个好大好大的傻逼");
    150         
    151         //重新创建Session
    152         se = sf.openSession() ;
    153         
    154         //重新开启事务
    155         ts = se.beginTransaction() ;
    156         
    157         se.saveOrUpdate(us);
    158         
    159         System.out.println(us);
    160     }
    161     
    162 
    163     //测试HQL
    164     @Test
    165     public void test05()
    166     {
    167         //使用HQL
    168         
    169         //1检测创建Query 对象
    170         Query qu = se.createQuery("from USer u where user_id < ? ") ;
    171         
    172         //设置占位符
    173         qu.setInteger(0, 10) ;
    174         
    175         //得到结果集
    176         List<USer> list = qu.list() ;
    177         
    178         //遍历结果集
    179         for(USer us : list )
    180         {
    181             System.out.println(us);//打印结果集
    182         }
    183         
    184         
    185         
    186         
    187         /*第二种占位符,从0开始*/
    188         Query qu1 = se.createQuery("from USer u where name = :uname ") ;
    189         
    190         qu1.setString("uname", "tom") ;
    191         
    192         //方法链调用
    193         List<USer> list1 = null ;
    194                 list1 = se.createQuery("from USer u where user_id < ? ").setInteger(0, 10).list() ;
    195         
    196         //遍历结果集
    197         for(USer us : list1 )
    198         {
    199             System.out.println(us);//打印结果集
    200         }
    201     }
    202 
    203 
    204     //测试分页
    205     @Test
    206     public void test06()
    207     {
    208         //设置开始行号  页码=2
    209         //(页码 - 1 ) *  每页行数
    210         
    211         List<USer> list = se.createQuery("from USer order by user_id ") //HQL语句
    212                                       .setMaxResults(2) //设置每页显示行数
    213                                       .setFirstResult(2) //设置第二页开始行号
    214                                       .list() ;
    215         
    216         //遍历结果集
    217         for(USer us : list )
    218         {
    219             System.out.println(us);//打印结果集
    220         }
    221         
    222     }
    223     
    224     
    225     //测试分页
    226         @Test
    227         public void test07()
    228         {
    229             List<Object[ ]> list = se.createQuery("select name from USer group by name")
    230                                              .list() ;
    231             System.out.println(list.size());
    232             for(Object obj : list)
    233             {
    234                 System.out.println(obj);
    235             }
    236         }
    237         
    238         
    239         //测试投影查询
    240         @Test
    241         public void test08()
    242         {
    243             List<Object[ ]> list = se.createQuery("select name, money from USer")
    244                                              .list();
    245             
    246             for(Object[ ] obj : list)
    247             {
    248                 System.out.println(obj[0] + " " + obj[1]);
    249             }
    250             
    251             
    252             List<USer> list1 = se.createQuery("select new USer(name, money) from USer")
    253                                             .list() ;
    254             
    255             for(USer us : list1 )
    256             {
    257                 System.out.println("姓名="+us.getName()+"金额="+us.getMoney());
    258             }
    259             
    260             
    261             
    262         }
    263         
    264         
    265         //清空表
    266         @Test
    267         public void test09()
    268         {
    269                 String hql = "DELETE FROM USer " ; 
    270                      
    271                  Query query = se.createQuery(hql);
    272             
    273                  int result = query.executeUpdate();
    274                  
    275                  System.out.println("Rows affected: " + result);
    276                 
    277         }
    278         
    279         
    280         //清空表
    281                 @Test
    282                 public void test10()
    283                 {
    284                     TUser tu = (TUser)se.get(TUser.class, 1l) ;
    285                     
    286                     System.out.println(tu);
    287                 }
    288         
    289         
    290 }
  • 相关阅读:
    波形捕捉:(9)写入到WAV文件
    C#基础回顾:GridView全选演示
    VS.net和Reflector 图标解释
    Dot Net屏幕传输 v1.0
    C#基础回顾:用GDI+绘制验证码
    波形捕捉:(8)使用“捕捉缓冲区”
    DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
    DirectX编程:[初级]C#中利用DirectSound播放WAV格式声音[最少只要4句话]
    GroupingView控件 使用经验
    Dot Net下实现屏幕图像差异获取v2.0
  • 原文地址:https://www.cnblogs.com/20gg-com/p/6053654.html
Copyright © 2011-2022 走看看