posts - 60,comments - 71,trackbacks - 0

              1、讀取配置文件獲得連接
             讀取hibernate.cfg.xml配置文件,hibernate.cfg.xml文件放在Classpath下,使用下面的方式讀入該文件
                //Configuration 負責管理hibernate配置信息
                Configuration config=new Configuration().configure();
                //根據config建立SessionFactory
                //SessionFactory用于建立Session
                SessionFactory sessionFactory=config.buildSessionFactory();
                //開啟session,相當于jdbc的Connection
                session = sessionFactory.openSession();

          2、Criteria 基本資料查詢
          (1)標準查詢:
                //創建查詢標準
                Criteria criteria=session.creteCriteria(User.class);
                //查詢條件
                criteria.add(Expression.eq("name","caterpillar"));
          ************************************************************************************
          Expression.eq(String s1,String s2)---------->相等s1=s2
          Expression.allEq(Map map)    --------------->多個屬性-值對應關系,多個Expression.eq疊加
          Expression.gt(String s1,String s2)----------->大于s1>s2
          Expression.ge(String s1,String s2)----------->大于等于s1>=s2
          Expression.lt(String s1,String s2)------------>小于s1<s2
          Expression.le(String s1,String s2)------------>小于等于s1<=s2
          Expression.between(String s1,int s2,int s3)--->s2<s1<s3
          Expression.like(String s1,String s2)------------>s1 like s2
          比較2個屬性
          Expression.eqProperty(String s1,String s2)--->s1=s2
          Expression.gtProperty(String s1,String s2)---->s1>s2
          Expression.geProperty(String s1,String s2)---->s1>=s2
          Expression.ltProperty(String s1,String s2)----->s1<s2
          Expression.leProperty(String s1,String s2)----->s1<=s2
          Expression.and()----->Expression.and(Expression.eq("String s1,String s2"),Expression.eq(String s3,String s4))
          Expression.or()
          ************************************************************************************
          (2)高級查詢
          一、可以使用Criteria進行查詢,并用order對結果進行排序。
          //設置從第幾條開始取的記錄
          criteria.setFirstResult(100);
          //最多取的幾條記錄
          criteria.setMaxResults(20);
          //對結果進行排序
          criteria.addOrder(Order.asc(String s1));
          criteria.addOrder(Order.desc(String s2));

          二、可以對查詢結果進行統計操作,使用Projections的rowCount(),count(),max(),min(),countDistinct()等方法:
          例如:criteria.setProjection(Projections.max("age"));

          三、還可以用Projections的groupProperty()來對結果進行分組
          例如:criteria.setProjection(Projections.groupProperty("age"));

          (***)四、結合統計與分組的功能,可以用ProjectionList
          例如:ProjectionList projectionList =Projections.projectionList();
                      projectionList.add(Projections.groupProperty("age"));
                      projectionList.add(Projections.rowCount());
                      criteria.setProjection(projectionList);
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                //查詢所有記錄
                List users=criteria.list();
                Iterator iterator=users.iterator();
                while(iterator.hasNext()){
                   User user=(User)iterator.next();
                   System.out.println(user.getId()+"\t"+user.getName()+"/"+user.getAge());
          }
          3、criteria的增、刪、改(還不完善)
          在用到增、刪、改時,必須先聲明事務
          增加:
            Transaction tx = session.beginTransaction();//Transaction表示一組會話操作
            session.save(user);//將事物映射到數據庫進行存儲
            tx.commit();
            session.close();
          刪除:
            Session session=this.getSession();
            User user=(User)session.get(User.class, new Integer(1));
            Transaction tx = session.beginTransaction();//Transaction表示一組會話操作
            session.delete(user);//將事物映射到數據庫進行存儲
            tx.commit();
            session.close();

          修改:
            Session session=this.getSession();
            User user =(User)session.get(User.class,new Integer(2));//創建持久化的事物
            user.setName("wyqqqqqqqqqq");
            user.setAge(new Integer(30));
            Transaction tx = session.beginTransaction();//Transaction表示一組會話操作
            session.update(user);//將事物映射到數據庫進行存儲
            tx.commit();
            session.close();
          posted on 2008-05-18 20:41 henry1451 閱讀(458) 評論(0)  編輯  收藏 所屬分類: Hibernate技術
          主站蜘蛛池模板: 肇源县| 黄山市| 绿春县| 长海县| 沁水县| 岚皋县| 焦作市| 汨罗市| 宁陕县| 普宁市| 库车县| 康乐县| 马关县| 大悟县| 乌拉特后旗| 平度市| 哈巴河县| 高雄县| 石嘴山市| 昌邑市| 秦皇岛市| 福泉市| 呼玛县| 华蓥市| 福清市| 庆城县| 莒南县| 阿坝| 宁城县| 临泉县| 连平县| 大竹县| 钦州市| 六枝特区| 红原县| 英吉沙县| 宁明县| 潢川县| 文登市| 南皮县| 长子县|